Dozer - 创建父对象的引用

Dozer - create reference of parent object

我正在尝试使用 Dozer 从 JAXB 实体 "JaxbParent" 填充 Hibernate 实体 - "Parent"。 我的休眠实体:

public class Parent 
{
    String name;
    String age; 

    @OneToMany
    private Set<Child> childSet;
}

public class Child
{
  String name;
  String age;

  @ManyToOne
  private Parent parent;
}

我的 Jaxb 实体看起来像:

public class JaxbParent 
{
   List<JaxbChild> childList;
}

我的推土机 xml 映射配置:

<mapping wildcard="false">
    <class-a>com.test.Parent</class-a>
    <class-b>com.test.JaxbParent</class-b>
    <field custom-converter="com.test.MyCustomConverter">
      <a>childSet</a>
      <b>childList</b>
    </field>
</mapping>

所以,为了将 childList 转换为 childSet,我使用了 CustomConverter,并且我得到了正确的数据字段。 问题是,Hibernate 需要每个 Child 都引用 Parent 对象(以执行保存),但目前它是空的。我尝试将 'this' 引用传递给 MyCustomConverter,但这没有成功。 如何将父对象的引用传递给 customConverter,传递给每个子对象?也许我应该使用另一种方法?任何帮助表示赞赏。

最后,我最终在我的 DAO 层中手动添加了对父对象的引用,就在保存我的实体之前:

if(child.parent == null) {
child.parent = parent;
}

不幸的是,我无法在 Dozer 文档中找到其他解决方案。