#java #hibernate #jpa #jpa-2.0
#java #переход в спящий режим #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
.
}
Как я могу с помощью аннотаций сделать поле person в Post обязательным?
Я попытался использовать @Column (nullable = false), но я получаю исключение, сообщающее мне, что я не могу использовать эту аннотацию в коллекции @ManyToOne.
Спасибо!
Ответ №1:
Вы должны использовать @JoinColumn(name=..., nullable=false)
не @Column
Смотрите полный API
Ответ №2:
Или вы можете просто использовать @NotNull из пакета javax.validations.constraints.
Ответ №3:
Должно быть достаточно просто использовать @ManyToOne(optional = false)