#java #spring-boot #hibernate #jpa
#java #spring-boot #переход в спящий режим #jpa
Вопрос:
Я пытаюсь внедрить класс в другой, который содержит ссылку на объект. Я всегда получаю
org.hibernate.MappingException: Could not determine type for: ...
исключение. Мой вопрос: есть ли какой-либо способ, которым я могу внедрить класс, содержащий ссылки на объекты, или встраиваемые классы хранят только примитивы.
Я уже пробовал аннотацию @Target (), но не помогает.
Ответ №1:
Да, это возможно. Посмотрите на документацию.
@Embeddable
public static class Publisher {
private String name;
@ManyToOne(fetch = FetchType.LAZY)
private Country country;
//Getters and setters, equals and hashCode methods omitted for brevity
}
@Entity(name = "Book")
@AttributeOverrides({
@AttributeOverride(
name = "ebookPublisher.name",
column = @Column(name = "ebook_publisher_name")
),
@AttributeOverride(
name = "paperBackPublisher.name",
column = @Column(name = "paper_back_publisher_name")
)
})
@AssociationOverrides({
@AssociationOverride(
name = "ebookPublisher.country",
joinColumns = @JoinColumn(name = "ebook_publisher_country_id")
),
@AssociationOverride(
name = "paperBackPublisher.country",
joinColumns = @JoinColumn(name = "paper_back_publisher_country_id")
)
})
public static class Book {
@Id
@GeneratedValue
private Long id;
private Publisher ebookPublisher;
private Publisher paperBackPublisher;
//Getters and setters are omitted for brevity
}