- Клиент Сущность
Код: Выделить всё
@Entity
@Table(name = "customer")
public class Customer {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "name")
private String name;
@Column(name = "age")
private int age;
@OneToOne(mappedBy = "customer", cascade = CascadeType.PERSIST)
private Passport passport;
// constructors, getters and setters
}
- Субъект паспорта
Код: Выделить всё
@Entity
@Table(name = "passport")
public class Passport {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "passport_number")
private String passportNumber;
@OneToOne
@JoinColumn(name = "customer_id", referencedColumnName = "id")
private Customer customer;
//constructors, getters and setters
}
- Я настраиваю отношение OneToOne
Код: Выделить всё
try {
session.beginTransaction();
Customer customer = new Customer("Customer 1", 77);
Passport passport = new Passport("777");
customer.setPassport(passport);
session.persist(customer);
session.getTransaction().commit();
}
finally {
factory.close();
}
Клиент {id: 1, имя: "Клиент 1", возраст: 77}< /strong>
и
Паспорт {id: 1, Passport_number: "777", customer_id: null< /p>
Почему гибернация не сохраняет customer_id, если я настраиваю отношение?
Если я привязываюсь с обеих сторон, то все ок
Код: Выделить всё
try {
session.beginTransaction();
Customer customer = new Customer("Customer 1", 77);
Passport passport = new Passport("777");
passport.setCustomer(customer);
customer.setPassport(passport);
session.persist(customer);
session.getTransaction().commit();
}
finally {
factory.close();
}
Если я связываю отношение с обеих сторон, это работает, но почему спящий режим не сохраняет автоматически мой ключ fk?
Подробнее здесь: https://stackoverflow.com/questions/791 ... oreing-key