我正在使用 Ant Script 从现有表中生成带有注释的 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。即避免反向映射。 请帮忙。提前致谢。
最佳答案
我在这里做一个假设,但我认为你使用 Hibernate Tools for Ant生成实体类。这些工具(据我所知)基于 Hibernate 映射 XML (hbm.xml) 生成类。
I am generating hibernate pojo classes with annotations from existing tables using Ant Script. I am stuck with a problem. Problem is that I am having two classes Person and Address. There is OneToMany mapping between these two classes.
您已经说过 Person 和 Address 类,它们是或者至少应该是您数据库中表的映射, 是 1:N 关系。 (一个人可以有多个地址,而一个地址只能属于一个人。)因此,您应该有一个 Person.hbm.xml 和 Address.hbm.xml 周围某处的文件。这意味着,如果您的映射文件正确,则 Hibernate 工具将生成一个 Set 字段(带有 getter 和 setter 方法),因为它就是这样工作的。
我不是该工具的活跃用户,但据我所知,您有以下选项。
- 更改您的表(和映射),使 Person 和 Address 处于1:1 关系(不太酷)。
- 如果您只想限制您的客户使用getAddresses 和setAddresses 方法,那么您可以修改生成的方法的可见性。查看Hibernate Tools Reference Guide's关于 Controlling POJO Code Generation 的部分(尤其是关于 meta 属性的小节)。
(我真的不太了解 Hibernate Tools,所以也许可以通过一些配置完全省略有问题的方法,但这样做确实不合适。)
关于java - 生成 Hibernate POJO 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8307111/