Может ли встраиваемый класс JPA содержать ссылку на объект?

#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
}