我一直在遵循一个关于使用 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。我们需要知道:
- 外键字段名称
- 外键字段值