我正在为应用设计持久性存储库。
我是 Hibernate + JPA2 的新手,我遇到了创建更复杂的关系的麻烦在这种情况下外部强制性密钥。
一个例子(刚写在记事本上,所以它不是这个。)
我有一个名为Person的顶级类,可以容纳多个帖子(另一个类)。
如果我像这样映射我的顶级
@Entity
@Table(name="tb_people")
public class Person{
@Id
@GeneratedValue
public long id;
@OneToMany(mappedBy="person")
List<Post> listOfPosts;
.
. more code
.
}
@Entity
@Table(name="tb_posts")
public class Post{
@Id
@GeneratedValue
public long id;
@ManyToOne
@JoinColumn(name = "person_id")
Person person;
.
.more code
.
}
如何使用注释使Post中的person字段成为必填项?
我尝试使用@Column(nullable = false)但是我得到一个例外,告诉我我不能在@ManyToOne集合上使用该注释。
谢谢!
答案 0 :(得分:4)
您必须使用@JoinColumn(name=..., nullable=false)
而不是@Column
请参阅complete API
答案 1 :(得分:1)
或者您可以使用javax.validations.constraints包中的@NotNull。
答案 2 :(得分:0)
仅使用@ManyToOne(optional = false)