一对一映射-播放框架实体 [英] OneToOne Mapping - Play Framework Entity
问题描述
我正在努力在我的游戏框架应用程序上成功实现OneToOne映射.
I'm struggling to successfully implement a OneToOne mapping on my play framework application.
我的例子是:
@Entity
public class Profile extends GenericModel {
@Id
@GeneratedValue(generator = "foreignGenerator")
@GenericGenerator(name = "foreignGenerator", strategy = "foreign",
parameters = @Parameter(name = "property", value = "user"))
public static int id;
@OneToOne(mappedBy="profile", cascade = {CascadeType.ALL})
public static User user;
}
和:
@Entity
public class User extends Model {
@Required
public String firstName;
@Required
public String surname;
}
在此设置中,它引发:
org.hibernate.AnnotationException:未为实体指定名称:models.Profile
org.hibernate.AnnotationException: No identifier specified for entity: models.Profile
编辑:根据 Christian Boariu的答案,我已将个人资料修改为您的个人资料建议用户:
EDIT: As per Christian Boariu's answer, I have modified Profile to what you have suggested and User to:
@Entity
public class User extends GenericModel {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long user_id;
@Required
public String firstName;
@Required
public String surname;
@OneToOne(cascade = {CascadeType.ALL})
@PrimaryKeyJoinColumn(name = "user_id", referencedColumnName = "profile_id")
public Profile profile;
public Profile getProfile() {
return profile;
}
public void setProfile(Profile profile) {
this.profile = profile;
}
}
还在个人资料中添加了getter/setter:
Also added getter/setter to Profile:
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
但是我现在得到hibernate.id.IdentifierGenerationException: null id generated for:class models.Profile
..不确定如何纠正?
But I am now getting hibernate.id.IdentifierGenerationException: null id generated for:class models.Profile
.. not sure how to correct?
推荐答案
问题与您的ID定义有关.
The problem is about your Id definition.
它应该不是static
.
此外,用户也不应该是静态的.
Also, user should not be static as well.
更新:
所以您的课程应该是这样的:
So your class should be like this:
@Entity
public class Profile extends GenericModel {
@Id
@GeneratedValue(generator = "foreignGenerator")
@GenericGenerator(name = "foreignGenerator", strategy = "foreign",
parameters = @Parameter(name = "property", value = "user"))
public int id;
@OneToOne(mappedBy="profile", cascade = {CascadeType.ALL})
public User user;
}
这篇关于一对一映射-播放框架实体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!