- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 Play Framework (Java 风格)用于项目。在这个项目中,我有两个模型,我想在它们之间创建一个 OneToOne
关系。
我有一个 User
模型和一个 UserLegalName
模型。我希望每个 User
都有一个 UserLegalName
模型。
User
model code
UserLegalName
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}
您可以将 fetch=FetchType.EAGER
添加到 User
模型中的 OneToOne
注释,这将获取 UserLegalName
每次。然而实际上 User
模型要复杂得多。它拥有更多的关系。
有没有其他方法可以做到这一点?通过将获取类型保持为 EAGER
,它可能会创建低效查询(例如:我只希望用户电子邮件在一个单独的表中,但它也会查询 User_Legal_Name
表)
最佳答案
我使用了您在上面链接中发布的两个模型并成功测试。正如@Andrei 在他的评论中提到的,问题不在于映射,而应该是你保存它们的方式。以下是我用于测试的代码片段。
用户
@Entity
public class User extends Model{
/ ..... fields as it is in your post
public User(String user_id){
this.userId = user_id;
}
public static Finder<Long, User> find = new Finder<Long, User>(Long.class, User.class)
public static User findByUserID(String user_id){
/* Your models already in bi-directional relationship, so there is no need for external `fetch`, You can directly get `UserLegalName` object from `User`
model if there is any match found on `UserLegalName` for the input. */
return find.where().eq("userId",user_id).findUnique();
}
}
UserLegalName
@Entity
public class UserLegalName extends Model {
/ ..... fields as it is in your post
public UserLegalName(User user_id, String first_name, String last_name){
this.user = user_id;
this.firstName = first_name;
this.lastName = last_name;
}
}
Controller
public class TestController extends Controller {
public static Result insertUser(String user_id, String fname, String lname)
{
User user = new User(user_id);
UserLegalName legal = new UserLegalName(user,fname,lname);
user.legalName = legal;
user.save();
return ok(user.legalName.firstName);
}
public static Result getUser(String user_id)
{
User user = User.findByUserID(user_id);
return ok(user.legalName.firstName);
}
}
路线
GET /test/:userID/:fname/:lname controllers.TestController.insertUser(userID : String, fname : String, lname : String)
GET /user/:userID controllers.TestController.getUser(userID : String)
关于java - Play Framework,OneToOne 关系不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27053097/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!