Meglehetősen új vagyok a Hibernate-ban, és kérdésem lenne, hogyan kell kezelni egy Beszúrást, ha az entitásnak van FK-ja; konkrétan hogyan kell létrehozni a beillesztendő entitást.
Entitásaim a következő egyszerűsített szerkezettel rendelkeznek:
@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 User 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;
}
...
}
Most meg akarok tartani egy új eseményt, és az esemény Felhasználójához társítottam a UserID-t.
Valami ilyesmit kell létrehoznom:
Event eventToInsert = new Event(45,6, *User object I don't have*);
hogy később szóljon a hibernáltnak, hogy mentse az eseményt az Insertbe.
A problémám az, hogy csak a felhasználói azonosítóm van, de az esemény létrehozásához szükségem van a teljes felhasználói objektumra, és nem csak az azonosítójára.
Szóval a kérdések:
- Ez tervezési hiba? Az eseménynek csak egy „int userID” mezője legyen a „Felhasználói felhasználó” helyett?
- A Hibernate-nek van valami módja ennek a problémának a kezelésére? Valami hasonló:
Event eventToInsert = new Event(45,6, Hibernate.getEntity(UserTable, UserIdValue);
-Mi lenne a megfelelő módja ennek?
Köszönöm a segítséget.