【问题标题】:How to make a @ManyToOne field mandatory in JPA2?如何在 JPA2 中强制设置 @ManyToOne 字段?
【发布时间】:2011-05-02 14:02:56
【问题描述】:

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

我是 Hibernate+JPA2 的新手,我在创建更复杂的关系时遇到了麻烦,在这种情况下是 外来强制密钥。 p>

一个例子(只是在记事本上写的,所以不完全是这个。

我有一个名为 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 集合上使用该注释。

谢谢!

【问题讨论】:

    标签: java hibernate jpa jpa-2.0


    【解决方案1】:

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

    complete API

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        只要使用@ManyToOne(optional = false)就足够了

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多