使用hibernate工具进行延迟映射?

时间:2014-05-19 14:06:54

标签: java hibernate reverse-engineering hibernate-tools

我的数据库中有两个表AB。我在表格中B我通过整数A引用了表格idA。 (idA是B的外键) 当我使用hibernate-tools进行逆向工程时,我会生成两个Java对象。

public class A{
  int id;
} 

public class B{
  int id;
  A a;
} 

但我想要

public class B{
  int id;
  int idA;
}  

我该怎么做?

谢谢,

2 个答案:

答案 0 :(得分:1)

所以我找到了一个解决方案:创建自定义ReverseEngineeringStrategy并将excludeForeignKeyAsManytoOne方法的返回值更改为true

public class MyReverseEngineeringStrategy extends DelegatingReverseEngineeringStrategy {

    public MyReverseEngineeringStrategy(ReverseEngineeringStrategy delegate) {
        super(delegate);
    }

    @Override
    public boolean excludeForeignKeyAsManytoOne(String keyname, TableIdentifier fromTable, List fromColumns, TableIdentifier referencedTable, List referencedColumns) {
        return true;
                }

}

答案 1 :(得分:0)

我认为你必须手动更新你的类,然后删除XML映射中的任何@OneToOne注释或类似标记。

默认情况下,Hibernate建议您映射实体,这样您就可以立即使用,而无需显式获取它。