Свойство @IdClass не найдено в объекте - PullRequest
0 голосов
/ 17 октября 2018

Я использую весеннюю загрузку 2, jpa и hibernate

с этим кодом

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Samplings {

    @Id
    @GenericGenerator(name = "samplings_id_seq", strategy="com.lcm.model.SamplingSequenceGenerator")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "samplings_id_seq")
    private Integer id;

    @OneToMany(mappedBy = "sampling")
    private List<Samples> samples = new ArrayList<>();

}   

@Entity
@IdClass(SamplesPK.class)
public class Samples  {

    @Id
    private String sampleLetter;

    @Id
    @ManyToOne(optional = false)
    @JoinColumns({
        @JoinColumn(name = "id", referencedColumnName = "id")})
    private Samplings sampling;
}   

public class SamplesPK implements Serializable {

    private Integer id;

    private String sampleLetter;

    public SamplesPK(Integer id, String sampleLetter) {
        this.id = id;
        this.sampleLetter = sampleLetter;
    }

    .... //get / set
}

Я получаю эту ошибку:

org.hibernate.AnnotationException:Свойство @IdClass не найдено в сущности com.lcm.model.Samples :: id

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Похоже, вам не хватает некоторых компонентов вашего SamplesPk.class в вашей сущности Samples.

Он называется Samples :: samplingId

Вот вам пример ССЫЛКА

РЕДАКТИРОВАТЬ:

Таким образом, ваша сущность должна выглядеть следующим образом:

@Entity
@IdClass(SamplesPK.class)
public class Samples  {

    @Id
    private String sampleLetter;

    @Id
    private Integer id;

    @Id
    @ManyToOne(optional = false)
    @JoinColumns({
        @JoinColumn(name = "sampling_id", referencedColumnName = "id")})
    private Samplings sampling;
}   
0 голосов
/ 17 октября 2018

Имена полей или свойств в классе первичного ключа и полях первичного ключа или свойствах сущности должны соответствовать, а их типы должны совпадать.Из документов здесь .

Ваш класс Samples должен иметь свой идентификатор, идентичный вашему типу SamplesPK.

У вас должно быть @Id private Integer id в вашемSamples класс

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