播放框架:将外键添加到模型“@”?

时间:2015-02-11 15:22:39

标签: playframework model foreign-keys

我正在尝试将一个外键添加到模型中,这是否可以通过" @"签....?

所以,我有两个模型:

    @Entity
    public class NewEn extends Model{
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        public int Id;

        public String name;
        public String tags;

        public String user_id;
...
}

和:

@Entity
public class NewUser extends Model{


    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public int Id;

    public String username;
    public String first_name;
    public String last_name;
    public String email;
    public String password;

....
}

我想:' user_id'从NewEn开始,与NewUser模型中的主键(Id)相等。 如何使用@符号在模型中执行此操作?或者我如何将这些表格与我的代码绑在一起,而不是从数据库中绑定?

1 个答案:

答案 0 :(得分:2)

@开头的单词是annotations。在这种情况下,这些是JPA annotations用于将Java中的对象映射到数据库中的表/行。

假设您正在尝试在NewUser和NewEn之间创建1-N关系(即NewUser对象可以有许多NewEn对象),您需要像这样更改它:

@Entity
public class NewEn extends Model{
    // (...)
    public String tags;

    @ManyToOne
    public NewUser user;
    // (...)
}

然后从您使用someNewEn.user的给定NewEn访问NewUser。如果您还希望能够获取与给定NewUser关联的所有NewEn对象,请在类文件中指定:

@Entity
public class NewUser extends Model{

    // (...)
    public String password;

    // mappedBy is the name of the field in NewEn that contains the foreign key
    @OneToMany(mappedBy = "user")
    public List<NewEn> newEns;
    // (...)
}

请注意,现在,如果要将NewEn与NewUser关联,则必须使用对象而不是简单的ID。如果您只需要使用ID,则必须执行以下操作:

int userId = 345;
User user = new User();
user.id = userId;

someNewEnObject.user = user;
someNewEnObject.save();