Это ссылка, как говорили другие. В C вы, вероятно, напишете функцию как нечто вроде
void read_wav(struct Read_wav* rw, const char* filename)
{
}
Вы пробовали это.
public Instructor(String firstName, String lastName, String email) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.theInstructorDetail= new InstructorDetail();
}
Я думаю, вы должны начать все атрибуты.
Настройка кода указывает на OneToOne Unidirectional Association
, где InstructorDetail является родительским, а Instructor - дочерним. Чтобы это работало, вы должны сохранить / сохранить InstructorDetail перед тем, как сохранить / сохранить сущность Instructor.
blockquote>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;