我正在尝试将一个外键添加到模型中,这是否可以通过" @"签....?
所以,我有两个模型:
@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)相等。 如何使用@符号在模型中执行此操作?或者我如何将这些表格与我的代码绑在一起,而不是从数据库中绑定?
答案 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();