[英]@ManyToOne field not working in Playframework 2
我在游戲框架中遇到一些持久性問題。 我不認為我要努力做的事情很難,所以我不明白為什么我所做的只是行不通。 我創建了一個實體,該實體通過ManyToOne映射(在下面的示例中為cv)引用另一個實體。 主要實體被持久化,而參考實體也似乎被持久化。 但是,每當我通過實體加載主實體時。 主實體加載的findAll()
方法,但引用實體上的所有值均為null。
甚至更奇怪的是,主要實體似乎對於剛剛加載的引用實體具有正確的ID。 我知道這一點,因為我在啟動應用程序時同時在主要實體( CrossTrade
)和被引用實體( CurVal
)上都進行了find.all操作,它正在查找具有值的所有引用實體和具有值的主要實體。 出於某種原因,當我加載它時,似乎並沒有從CrossTrade實體中獲取引用的實體值。 任何幫助將非常感激。
@Entity
@Table(name="CrossTrade")
public class CrossTrade extends Model {
@Id
@GeneratedValue
public Long id;
@Transient
public Double quantity = 1.00;
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
public CurVal cv;
}
@Entity
@Table(name="CurVal")
public class CurVal extends Model{
@Id
@GeneratedValue
public Long id;
public Double high;
public Double low;
public Double fee;
}
您不是在告訴Ebean ManyToOne
引用映射到的位置。
嘗試將您的CurVal
類更新為:
@Entity
@Table(name="CurVal")
public class CurVal extends Model{
@Id
@GeneratedValue
public Long id;
@OneToMany(mappedBy="cv")
public Set<CrossTrade> trades;
public Double high;
public Double low;
public Double fee;
}
另一件事是, ManyToOne
上具有CascadeType.ALL
情況相當ManyToOne
,因為如果刪除一個CrossTrade
,它也會同時刪除附加的CurVal
,但將所有其他CrossTrades
CurVal
為孤立的CurVal
。 絕對應該相反,即將CascadeType.ALL
放在OneToMany
字段上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.