播放 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的主要内容,如果未能解决你的问题,请参考以下文章

在 ebean 中创建一个表,其中两个列表连接到另一个表

播放框架 2.4 Ebean

播放框架 Ebean BigDecimal 分数

怎样用MFC做一个音乐播放器,可以实现播放,暂停,上一首,下一首和显示播放列表的基本功能。谢谢!

Lob 使用 play 框架和 Ebean 和 H2 返回 null

设置为null后如何将onItemClickListener重置为true?