我是JPA的新手,更不用說JPA在Play中,所以我想知道什麼是最好的方式來保存與多個類的@ManyToOne
關係的對象。在Play框架中堅持JPA實體的最佳方法
的UserJump類被定義爲如下:
@Entity
public class UserJump extends Model{
@ManyToOne
public User user;
@ManyToOne
public JumpSession jumpSession;
public String parachuteUID;
public String notes;
public int status;
}
到UserJump的關係從內部JumpSession由下式定義:
@OneToMany(mappedBy="jumpSession")
public List<UserJump> userJumps;
同樣,在用戶類別:
@OneToMany(mappedBy="user")
public List<UserJump> userJumps;
這裏是我如何保存的東西現在:
JumpSession jumpSession = new JumpSession();
//...Code here to fill in jumpSession...
jumpSession.save();
UserJump userJump;
for(String jumperUID : jumpers)
{
userJump = new UserJump();
userJump.jumpSession = jumpSession;
userJump.user = User.findById(jumperUID);
userJump.status = 1;
userJump.save();
}
在我看來,應該有一種方法來拯救那些UserJump對象的列表,名爲userJumps然後做jumpSession.userJumps = userJumps
,然後jumpSession.save()
它應該堅持所有的UserJump對象。有沒有辦法做到這一點?哪種方式是最好的方法呢?
嗯,它最初是User和JumpSession之間的'@ ManyToMany'關係,但我需要在連接表中有更多的列。用戶將不斷查看它們所屬的所有跳轉會話,並且該關係由UserJump(存儲有關跳轉的數據)維護。爲什麼雙方的關係不好?用戶與JumpSession具有同樣的UserJump關係。 – Indigenuity
@Indigenuity:更新。 – axtavt
非常感謝您花時間來解釋。所以,即使兩個實體之間存在一對多的關係,如果一個對另一個的比例是無界的,那麼它不應該如此映射?我猜這是一條通用規則,不是隻適用於此處的規則。 – Indigenuity