如何在JPA2中强制使用@ManyToOne字段?

时间:2011-05-02 14:02:56

标签: java hibernate jpa jpa-2.0

我正在为应用设计持久性存储库。

我是 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集合上使用该注释。

谢谢!

3 个答案:

答案 0 :(得分:4)

您必须使用@JoinColumn(name=..., nullable=false)而不是@Column

请参阅complete API

答案 1 :(得分:1)

或者您可以使用javax.validations.constraints包中的@NotNull。

答案 2 :(得分:0)

仅使用@ManyToOne(optional = false)

就足够了
相关问题