播放 Ebean 列表 null
Posted
技术标签:
【中文标题】播放 Ebean 列表 null【英文标题】:Play Ebean List null 【发布时间】:2014-11-17 15:16:57 【问题描述】:我在使用 Ebean 保存对象列表时遇到问题。
我有一个三班。最后一个包括两个儿童班。
@Entity
@Table(name="A")
public class A extends Model
@Id
public String idA;
@OneToMany(cascade=CascadeType.ALL, mappedBy = "currentA")
private List<B> listOfB;
二等乙:
@Entity
public class B extends Model
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
public Long idB;
@ManyToOne
@JoinColumn(name = "idA")
private A currentA;
@OneToMany(cascade=CascadeType.ALL, mappedBy = "currentB")
public ArrayList<C> lstOfC;
public B(List<C> lstC)
this.lstOfC=lstC;
最后一个:
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorValue("X")
public class C extends Model
@ManyToOne
@JoinColumn(name = "idB")
private B currentB;
private setcurrentB(int currentB)
this.currentB=currentB;
我面临的问题是我需要创建一个 C 对象 (lstOfC) 的列表,但是当我将元素放入列表时我不知道 currentB 的值。 我需要稍后设置(使用设置器)这个值,然后将其保存到数据库中。
但是当我尝试这样做时,C 对象的列表在 A 中的 B 列表中为空。
ArrayList<C> lstC=new ArrayList<C>();
c1=new C();
c2=new C();
B=new B(lstC);
for (C c: lstC)
c.setcurrentB(1);
Ebean.save(c);
【问题讨论】:
【参考方案1】:您的示例在 setcurrentB(1) ... 取 1 但需要一个 B 的实例时不太有意义 - 我认为这是一个参考 bean。
您似乎想暂时关闭级联持久性,您可以在 Transaction 上执行此操作。
Transaction tranaction = Ebean.beginTransaction();
try
// turn off persist cascade for this transaction
transaction.setPersistCascade(false);
for (C c: listC)
Ebean.commitTransaction();
finally
Ebean.endTransaction();
【讨论】:
以上是关于播放 Ebean 列表 null的主要内容,如果未能解决你的问题,请参考以下文章
怎样用MFC做一个音乐播放器,可以实现播放,暂停,上一首,下一首和显示播放列表的基本功能。谢谢!