Eclipse hibernate pojo 生成包括外键

2024-01-30

我一直在遵循一个关于使用 hibernate 从 mysql 数据库生成 pojo 的优秀指南。人们可以在这里找到指南以供参考:使用 hibernate 生成 pojo http://www.javacodegeeks.com/2013/10/step-by-step-auto-code-generation-for-pojo-domain-java-classes-and-hbm-using-eclipse-hibernate-plugin.html

我得到的 pojo 具有在存在外键时嵌入其他对象的字段。例如,用户有地址。 Hibernate 正在生成如下内容:

public class User(){
 private String name;
 private Integer uid;
 private Address address;
}

不过,我有一个问题,因为我希望这些类实际上包含外键值。例如,我希望 User 对象有一个与 addressId 的数据库字段相对应的类字段。所以,我希望该对象实际上看起来像这样:

public class User(){
 private String name;
 private Integer uid;
 private Integer addressId;
 private Address address;
}

有谁知道如何修改休眠代码生成过程以便将外键值作为对象上的字段包含在内?

Update:我找到了一篇 SO 帖子,其中描述了如何忽略外键关系并仅将外键作为类字段:如何忽略外键? https://stackoverflow.com/questions/23739937/lazy-mapping-with-hibernate-tools

这里的问题是我两者都想要。我不想忽视这些关系。我希望它们得到代表,但我也想要实际的外键值。

Update:

让我更具体地说明为什么我想要这个解决方案。我们正在尝试序列化这些休眠对象。现在,我们有很多不同的 hibernate pojo,它们正在被逆向工程。我们不想为每个类手动编写序列化例程。如果我们遵循“只需手动编写对嵌入对象上的外键字段的访问方法”的约定,我们就必须这样做。此外,即使我们这样做,pojo 仍然不知道外键的字段叫什么。相反,我们使用带有类型适配器的 gson。

使用 gson,我们序列化 pojo 上的所有字段,并忽略包含 hibernate 对象的字段。当然,问题是我们没有外键字段。我们需要一些信息,以便通用地序列化任何 hibernate pojo。我们需要知道:

  1. 外键字段名称
  2. 外键字段值

您的方法违反了 Hibernate 约定。由于 Hibernate 使用反射,约定对于 Hibernate 完成其工作至关重要。正因为如此,我怀疑莫文的“遵循惯例”方法是最简单的。但是,如果这是不可协商的,您有两种选择。

您的第一个选择是添加一个瞬态 getter,以公开 getAddressId() 函数。

public class User() {
    private String name;
    private Integer uid;
    private Address address;

    // Getters, setters...

    @Transient
    public boolean getAddressId() {
        address.getId();
    }
}

您的第二个选择是添加一个数据访问层,以在 Hibernate 对象之上强加您自己的约定。这一抽象层不受 Hibernate 约定的约束。这样,您的 POJO 将被 DAO 包装(数据访问对象 https://en.wikipedia.org/wiki/Data_access_object),您可以根据需要进行设计。

Update:

鉴于您的特殊情况,请考虑修改您的序列化步骤。 GSON 通常不能使用瞬态方法,但有一个扩展可以做到this https://github.com/julman99/gson-fire, 如图所示here https://stackoverflow.com/questions/7416276/how-to-expose-a-method-using-gson.

另一种解决方案是使用反射按照您想要的方式复制对象,然后使用 GSON 序列化复制的对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Eclipse hibernate pojo 生成包括外键 的相关文章

随机推荐