Как сделать поле @ManyToOne обязательным в JPA2? - PullRequest
2 голосов
/ 02 мая 2011

Я проектирую постоянный репозиторий для приложения.

Я новичок в Hibernate + JPA2 и у меня возникают проблемы при создании более сложных отношений в этом случае Внешний обязательный ключ .

Пример ( только что написал в блокноте, так что это не совсем так. )

У меня есть Высший класс, называемый Персона, который может занимать несколько должностей (другой класс).

Если я сопоставлю свой высший класс, как это

@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
    .

}

Как я могу использовать аннотации, чтобы сделать поле человека в Посте обязательным?

Я пытался использовать @Column (nullable = false), но получаю исключение, сообщающее, что я не могу использовать эту аннотацию в коллекции @ManyToOne.

Спасибо!

Ответы [ 3 ]

4 голосов
/ 02 мая 2011

Вы должны использовать @JoinColumn(name=..., nullable=false), а не @ столбец

См. полный API

1 голос
/ 19 сентября 2018

Достаточно просто использовать @ManyToOne(optional = false)

1 голос
/ 05 ноября 2015

Или вы можете просто использовать @NotNull из пакета javax.validations.constraints.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...