Исключение в теме & ldquo; main & rdquo; org.hibernate.AnnotationException: @OneToOne или @ManyToOne в

Это ссылка, как говорили другие. В C вы, вероятно, напишете функцию как нечто вроде

void read_wav(struct Read_wav* rw, const char* filename)
{

}
0
задан theansaricode 18 March 2019 в 17:43
поделиться

2 ответа

Вы пробовали это.

public Instructor(String firstName, String lastName, String email) {
    super();
    this.firstName = firstName;
    this.lastName = lastName;
    this.email = email;
    this.theInstructorDetail= new InstructorDetail();
}

Я думаю, вы должны начать все атрибуты.

0
ответ дан Rui Rocha 18 March 2019 в 17:43
поделиться

Однонаправленная ассоциация OneToOne

Настройка кода указывает на OneToOne Unidirectional Association, где InstructorDetail является родительским, а Instructor - дочерним. Чтобы это работало, вы должны сохранить / сохранить InstructorDetail перед тем, как сохранить / сохранить сущность Instructor.

session.beginTransaction();
session.save(theInstructorDetail);
session.save(ins);
session.getTransaction().commit();

Двунаправленная ассоциация OneToOne

Если вы не хотите связывать FK в БД, создайте двунаправленную ассоциацию в спящем режиме Java:

[1121 ] Instructor.java

@OneToOne
 @JoinColumn(name = "instructor_detail_id")
 private InstructorDetail theInstructorDetail;

InstructorDetail.java

 @OneToOne(mappedBy="instructor_detail")
 private Instructor theInstructor;

Персистическая логика

[113 ]

Рекомендуемая структура

Если вы можете внести изменения в вашу БД, я бы предложил одно из следующего:

Вариант A): Лучше

Сделать Instructor в качестве основной таблицы & amp; InstructorDetail как вторичный, логически имеет больше смысла. То есть удалите столбец instructor_detail_id из таблицы Instructor & amp; добавить столбец instructor_id в таблицу InstructorDetail. Затем просто переверните конфигурацию аннотации hibernate в классе java (в отличие от описанного выше).

Вариант B): лучший

Поскольку это отношение OnetoOne, для уменьшения занимаемой области индексации в памяти используйте один и тот же PK Instructor_Id для обеих таблиц. И тогда вы можете использовать @MapsId аннотацию и не использовать Bi-directional association.

InstructorDetail.java

 @OneToOne
 @MapsId
 private Instructor theInstructor;
0
ответ дан Amith Kumar 18 March 2019 в 17:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: