Playframework Play Framework Ebean始终在一对多关系中返回空列表

Playframework Play Framework Ebean始终在一对多关系中返回空列表,playframework,playframework-2.2,ebean,Playframework,Playframework 2.2,Ebean,我正在使用play 2.2.2,我在一对多关系中的列表中遇到问题 我有这个当前设置 @Entity public class BD_Uno extends Model { @Id public int serial; @OneToMany(mappedBy = "bd_uno", cascade = CascadeType.ALL) public List<BD_DOS> bd_dos = new ArrayList<BD_DOS>();

我正在使用play 2.2.2,我在一对多关系中的列表中遇到问题

我有这个当前设置

@Entity
public class BD_Uno extends Model {
    @Id
    public int serial;

    @OneToMany(mappedBy = "bd_uno", cascade = CascadeType.ALL)
    public List<BD_DOS> bd_dos = new ArrayList<BD_DOS>();

    public static Finder<Integer,BD_Uno> find = new Finder<Integer,BD_Uno>(Integer.class, BD_Uno.class);
}
当前的问题是,当我想要获取一对多关系的列表时,它似乎总是空的:

    BD_Uno uno= new BD_Uno();
    BD_DOS dos = new BD_DOS();
    dos.serial = 2;
    dos.save();

    BD_DOS dos_dos =  new BD_DOS();
    dos_dos.serial = 3;
    dos_dos.save();     

    uno.serial = 1;
    uno.bd_dos.add(dos);
    uno.bd_dos.add(dos_dos);

    uno.save();

    BD_Uno test = BD_Uno.find.byId(1);
在这种情况下,当我看到test.bd_dos时,它总是空的! 我做错了什么,我想是相当愚蠢的事情,但却让我头痛

谢谢你抽出时间,
克劳迪奥

不要在这里初始化
bd\u dos

@OneToMany(mappedBy = "bd_uno", cascade = CascadeType.ALL)
public List<BD_DOS> bd_dos = new ArrayList<BD_DOS>();
@OneToMany(mappedBy=“bd_uno”,cascade=CascadeType.ALL)
public List bd_dos=new ArrayList();
相反,您可以尝试以下操作:

@OneToMany(mappedBy = "bd_uno", cascade = CascadeType.ALL)
public List<BD_DOS> bd_dos;

...

BD_Uno uno= new BD_Uno();
uno.serial = 1;    
uno.bd_dos = new ArrayList<BD_DOS>();

BD_DOS dos = new BD_DOS();
dos.serial = 2;
// relate dos back to bd_uno  
// this should be optional since Ebean does this on its own  
dos.bd_uno = uno;

BD_DOS dos_dos =  new BD_DOS();
dos_dos.serial = 3;
dos_dos.bd_uno = uno;

uno.bd_dos.add(dos);
uno.bd_dos.add(dos_dos);

uno.save();
@OneToMany(mappedBy=“bd_uno”,cascade=CascadeType.ALL)
公共列表bd_dos;
...
BD_Uno Uno=新的BD_Uno();
uno.serial=1;
uno.bd_dos=新的ArrayList();
BD_DOS=新的BD_DOS();
dos.serial=2;
//将dos关联回bd_uno
//这应该是可选的,因为Ebean自己做这件事
dos.bd_uno=uno;
BD_DOS_DOS=新的BD_DOS();
dos_dos.serial=3;
dos_dos.bd_uno=uno;
uno.bd_dos.add(dos);
uno.bd_dos.add(dos_dos);
uno.save();

在将对象添加到集合之前保存
dos
dos\u-dos
对象。这太快了!,感谢您指出这一点(我编辑代码以反映它),但似乎我也有同样的问题。或者,至少当我检查“test”对象时,我看到“list”字段为空,可能是我做错了什么。谢谢你指出了这一点,但很抱歉,我也有同样的问题。也许我还不够清楚。。。在这种情况下,
uno
下的列表(ArrayList)很好,但是我从
find.by()
test
)中得到的列表被设置为一个EBeanList,其值为
list=null
,因此保存时,您的BD_uno表中有一条新记录,但在BD_DOS表中没有?你的BD_DOS表的模式是什么?我做了一些“玩干净”的游戏,现在似乎可以了,谢谢你的提示。
@OneToMany(mappedBy = "bd_uno", cascade = CascadeType.ALL)
public List<BD_DOS> bd_dos;

...

BD_Uno uno= new BD_Uno();
uno.serial = 1;    
uno.bd_dos = new ArrayList<BD_DOS>();

BD_DOS dos = new BD_DOS();
dos.serial = 2;
// relate dos back to bd_uno  
// this should be optional since Ebean does this on its own  
dos.bd_uno = uno;

BD_DOS dos_dos =  new BD_DOS();
dos_dos.serial = 3;
dos_dos.bd_uno = uno;

uno.bd_dos.add(dos);
uno.bd_dos.add(dos_dos);

uno.save();