【发布时间】:2015-01-19 02:40:03
【问题描述】:
我正在为一个项目使用Play Framework(Java 风格)。在这个项目中,我有两个模型,我想在它们之间创建OneToOne 关系。
我有一个User 模型和一个UserLegalName 模型。我希望每个User 都有一个UserLegalName 模型。
User model codeUserLegalName model code
问题在于User 和UserLegalName 不适合“相关”user_user_id 列始终为 NULL。我已经为UserLegalName 中的User 尝试了JoinColumn(name = "user_id"),但这也不起作用
编辑:
在接受@Sivakumar 回答并修复我的代码后,UserLegalName 现在可以正确存储
但是,当我尝试为用户获取 UserLegalName 时,它仍然出现 null
User.find.where().eq("userId", userId).findUnique()
返回
{"userId":"f5ea6d1d-d22d-4127-b6e7-0b3d0446edfe","legalName":null}
编辑 2:
您可以将fetch=FetchType.EAGER 添加到User 模型中的OneToOne 注释,这样每次都会获取UserLegalName。然而实际上User 模型要复杂得多。它拥有更多的关系。
有没有其他方法可以做到这一点?通过将获取类型保持为EAGER,它可能会创建低效的查询(例如:我只希望用户的电子邮件在单独的表中,但它也查询User_Legal_Name 表)
【问题讨论】:
-
你试过stackoverflow.com/questions/8560988/…的解决方案吗?
-
问题应该出在您的代码中,而不是映射中,因此请向我们展示您用于保存 UserLegalName 的代码。还请在您的问题中显示您应该从哪些数据库表中获取数据。
-
请注意我先回答,指向正确保存实体。
标签: java sql database jpa playframework