【发布时间】:2016-03-21 23:25:41
【问题描述】:
我一直在关注使用 hibernate 从 mysql 数据库生成 pojos 的优秀指南。可以在此处找到指南以供参考: Generate pojos with hibernate
当存在外键时,我得到的 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;
}
有谁知道如何修改休眠代码生成过程,以便将外键值作为字段包含在对象上?
更新: 我发现了一个 SO 帖子,它描述了如何忽略外键关系并将外键作为类字段:How to ignore foreign keys?
这里的问题是我想要两者。我不想忽视这些关系。我希望它们代表,但我也想要实际的外键值。
更新:
让我更具体地说明我为什么想要这个解决方案。我们正在尝试序列化这些休眠对象。现在,我们有很多不同的休眠 pojo 正在被逆向工程。我们不想为每个类手动编写序列化例程。如果我们遵循“只需手动编写对嵌入对象的外键字段的访问方法”的约定,我们将不得不这样做。此外,即使我们这样做,pojo 仍然不知道外键的字段叫什么。相反,我们使用带有类型适配器的 gson。
使用 gson,我们正在序列化 pojo 上的所有字段,而只是忽略包含休眠对象的字段。当然,问题是我们没有外键字段。我们在这里需要一些信息,以便一般地序列化任何休眠 pojo。我们需要知道:
- 外键字段名
- 外键字段值
【问题讨论】:
标签: java eclipse hibernate foreign-keys hibernate-tools