簡體   English   中英

推土機無法將Hibernate的persistentBag映射到List

[英]Dozer can't map Hibernate's persistentBag to List

我正在用Java作為大學作業來實現其余的Web服務,所以我對這些事情還很陌生,因此可能我用錯誤的方式來做。

無論如何,問題在於Dozer無法將Hibernate PersistentBag映射到java.util.List

我正在映射兩個類: AB

List<Department> A.departments

映射到

DepartmentsType B.departments

DepartmentsType只有一個屬性,即

List<DepartmentType> departments

因此,最終A.departments映射到B.departments.departmentsB.departments.departments這是映射:

<mapping>
    <class-a>it.unitn.lsde.persistence.A</class-a>
    <class-b>it.unitn.lsde.generated.B</class-b>

    <field>
        <a>name</a>
        <b>name</b>
    </field>
    <field>
        <a>city</a>
        <b>city</b>
    </field>
    <field> 
        <a>departments</a>
        <b>departments.departments</b>
        <a-hint>it.unitn.lsde.persistence.Department</a-hint>
        <b-hint>it.unitn.lsde.generated.DepartmentType</b-hint>
    </field>
    <field>
        <a>code</a>
        <b>code</b>
    </field>
</mapping>

這就是我定義A.departments (休眠)的方式:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "university", cascade = CascadeType.ALL)
protected List<Department> departments = new ArrayList<Department>();

這就是我定義B.departments

DepartmentsType departments;

最終這就是DepartmentsType.departmens的定義方式:

List<DepartmentType> departments;

每當我嘗試將class A class B映射到class B我都會從推土機收到“ Field Mapping Error

Source parent class: B
Source field name: departments
Source field type: class org.hibernate.collection.PersistentBag
Source field value: [it.unitn.lsde.persistence.Department@12b3c6b]
Dest parent class: A
Dest field name: departments.department
Dest field type: java.util.List

異常堆棧指出此代碼有問題:

return (B) mapper.map((A)session.get(A.class, id), B.class);

但是,當我將class B class A映射到class A一切都會按預期進行。 我知道,出於多種原因,Hibernate正在將我定義為List轉換為其PersistentBag但這應該是List本身。

我無法找出我在做什么,為什么推土機可以將A映射到B而不是B映射到A

提前致謝

經過數小時的搜索,我發現我在DepartmentsType的( B.departments )類上缺少列表的設置器。

沒有該設置程序,Dozer無法映射來自Hibernate的列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM