Я довольно новичок в Hibernate и у меня есть вопрос о том, как обрабатывать вставку, когда у сущности есть FK; в частности, как создать сущность для вставки.
Мои сущности имеют следующую упрощенную структуру:
@Entity
@Table(name="event")
public class Event implements java.io.Serializable {
private int id;
private int eventType
private User user;
public Event (int id, int eventType, User user) {
this.id = id;
this.eventType = eventType;
this.user = user;
}
@Id
@Column(name="ID")
public int getId() {
return this.id;
}
@Column(name="EVENT_TYPE", nullable=false)
public int getEventType() {
return this.eventType;
}
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE}, targetEntity=User.class )
@JoinColumn(name="USER_ID")
public User getUser() {
return this.user;
}
...
}
-----------
@Entity
@Table(name="user")
public class Event implements java.io.Serializable {
private int id;
private String name;
public User (int id, String name) {
this.id = id;
this.name = name;
}
@Id
@Column(name="ID")
public int getId() {
return this.id;
}
@Column(name="Name", nullable=false)
public String getName() {
return this.name;
}
...
}
Теперь я хочу сохранить новое событие, и у меня есть UserID, связанный с пользователем этого события.
Мне нужно создать что-то вроде:
Event eventToInsert = new Event(45,6, *User object I don't have*);
, чтобы позже сказать hibernate сохранить eventToInsert.
Моя проблема в том, что у меня есть только UserID, но для создания события мне нужен весь объект User, а не только его ID.
Итак, вопросы:
-Это конструктивная ошибка? В событии должно быть только поле int userID вместо «User user»?
- Есть ли у Hibernate способ решить эту проблему? Что-то вроде:
Event eventToInsert = new Event(45,6, Hibernate.getEntity(UserTable, UserIdValue);
-Какой подходящий способ сделать это?
Спасибо за любую помощь.