一对一映射-播放框架实体 [英] OneToOne Mapping - Play Framework Entity

查看:87
本文介绍了一对一映射-播放框架实体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在努力在我的游戏框架应用程序上成功实现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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆