生成Hibernate POJO类

时间:2011-11-29 07:12:18

标签: java hibernate java-ee

我正在使用 Ant脚本从现有表中生成带有注释的hibernate pojo类。 我遇到了问题。问题是我有两个类Person和Address。这两个类之间存在OneToMany映射。

生成的类包含:

//Person.java
@OneToMany(fetch=FetchType.LAZY)
public Set<Address> getAddresses()
{
    return addresses;
}
public void setAddresses(Set<Address> addresses)
{
    this.addresses=addresses;
}

//Address.java
@OneToMany(fetch=FetchType.LAZY)
public Person getPerson()
{
     return person;
}
public void setPerson(Person person)
{
     this.person=person;
}

我遇到的情况是我不想生成一组地址​​。有没有办法在没有设置的情况下生成POJO。即避免反向映射。 请帮忙。提前谢谢。

1 个答案:

答案 0 :(得分:1)

我在这里做了一个假设,但我认为你使用Hibernate Tools for Ant来生成实体类。这些工具(据我记得)基于Hibernate映射XML(hbm.xml)生成类。

  

我正在使用现有的注释生成hibernate pojo类   使用Ant脚本的表。我遇到了问题。问题是我   我有两个班的人和地址。有OneToMany映射   在这两个类之间

您已经说过 Person Address 类,它们或者至少应该是数据库中 tables 的映射,属于 1:N 关系。 (一个人可以有多个地址,而一个地址只能属于一个人。)因此,你应该有一个 Person.hbm.xml Address.hbm.xml 文件到处都是。这意味着,如果您的映射文件是正确的,那么Hibernate Tools将生成 Set&lt; Address&gt; 字段(使用getter和setter方法),因为它的工作原理。

我不是此工具的活跃用户,但我认为您有以下选项。

  1. 更改您的表格(和映射),以便人员和地址处于 1:1 关系中(不太酷)。
  2. 如果您只想限制客户端使用 getAddresses setAddresses 方法,则可以修改生成的方法可见性。请参阅Hibernate Tools Reference Guide's上的Controlling POJO Code Generation部分(尤其是关于 meta 属性的小节)。
  3. (我真的不太了解Hibernate Tools,所以也许可以通过一些配置完全省略有问题的方法,但这样做真的不合适。) < / p>