java - 生成 Hibernate POJO 类

标签 java hibernate jakarta-ee

我正在使用 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.

您已经说过 PersonAddress 类,它们是或者至少应该是您数据库中的映射, 是 1:N 关系。 (一个人可以有多个地址,而一个地址只能属于一个人。)因此,您应该有一个 Person.hbm.xmlAddress.hbm.xml 周围某处的文件。这意味着,如果您的映射文件正确,则 Hibernate 工具将生成一个 Set

字段(带有 getter 和 setter 方法),因为它就是这样工作的。

我不是该工具的活跃用户,但据我所知,您有以下选项。

  1. 更改您的表(和映射),使 Person 和 Address 处于1:1 关系(不太酷)。
  2. 如果您只想限制您的客户使用getAddressessetAddresses 方法,那么您可以修改生成的方法的可见性。查看Hibernate Tools Reference Guide's关于 Controlling POJO Code Generation 的部分(尤其是关于 meta 属性的小节)。

(我真的不太了解 Hibernate Tools,所以也许可以通过一些配置完全省略有问题的方法,但这样做确实不合适。)

关于java - 生成 Hibernate POJO 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8307111/

相关文章:

java - 哪个与spring一起使用的java orm是最轻量级的?

java - hibernate 恩弗斯 : Better way to add multiple Projections

java - Hibernate sql 查询条件

java - 更新已部署的 Java EE 应用程序中的 XSLT 文件而不重新部署?

java - 客户端加密

java - ECLIPSE : Error: Main method not found in class apple, 请将 main 方法定义为: public static void main(String[] args)

java - 从 Cloudbees 迁移到 @Run 的其他服务

java - 网络故障后重新建立数据库连接 - Hibernate

jakarta-ee - 从 IntelliJ 代码格式中排除页面中的部分

java - Spring + Jackson,要求 double 序列化时尾随 0