Как сопоставить ассоциацию @ManyToOne с использованием неосновного ключа в Hibernate? - PullRequest
0 голосов
/ 20 марта 2020

Как сопоставить @ManyToOne связь с использованием не-первичного ключа в Hibernate? Я могу использовать аннотацию @NaturalId, но подоконник имеет ошибку:

A Foreign key refering POJO.Question from POJO.Answer has the wrong number of column. should be 4

Класс вопроса (с несколькими первичными ключами):

    @Entity
    @Table(name = "[dbo].[Question]")
    public class Question implements Serializable {

        @Column(name = "[Id]", unique = true, nullable = false) 
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @NaturalId
        private Integer id;

        @EmbeddedId
        private QuestionEmbeddable questionEmbeddable;
}

Первичный ключ

    public class QuestionEmbeddable implements Serializable{

        @Column(name = "[Development Template Id]")
        private int templateId;

        //Sekcja w templejcie
        @Column(name = "[Section]")
        private Integer section;

        //Numer w sekcji
        @Column(name = "[Number]")
        private Integer number;

        //Wersja 
        @Column(name = "[Version]")
        private Integer version;
}

Класс ответа:

    @Entity
    @Table(name = "[dbo].[Answer]")
    public class Answer implements Serializable {

        @Id
        @Column(name = "[Id]", unique = true, nullable = false) 
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer id;

        @JoinColumn(name = "[Question Id]")
        @ManyToOne(fetch=FetchType.LAZY)
        private Question question;

Похоже, что связь по-прежнему @EmbeddedId вместо @Naturalid. Я не знаю почему?

1 Ответ

0 голосов
/ 21 марта 2020

Это ответ, необходимо использовать referencedColumnName

@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(
        name = "[Question Id]", referencedColumnName = "[Id]"
    )
    private Question question;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...