2012-04-25 122 views
0

我有一个2种型号,第二个是映射到相同的第一模型两次,用具体的数值(它有一个多对多表中的与附加价值的作用):当没有结果应该返回时,OneToMany会返回1个结果?

public class ModelB extend Model { 
    public ModelA parent; 
    public ModelA child; 
    public String value; 
    public boolean verified = true; 
} 

在MODELA:

@OneToMany(mappedBy="child") 
List<ModelB> items; 

如果没有条目在ModelB的数据库中,我做了modelA.items.size() => 1!

为什么1?它应该是0.

这会导致关于布尔和其他一些未解释的错误。

我该如何解决?我做错了什么?

谢谢。

+0

从列表中取第一个元素并告诉我们它是什么。它是否为空?或者这是一个具有价值的对象? – Fixus 2012-04-26 05:57:23

+0

这是ModelB的一个对象,但所有的字段都是null。我再次检查数据库,并且表是空的! – 2012-04-26 07:02:49

+0

尝试在ModelA中设置默认值:列表 items = new列表(); – Fixus 2012-04-26 07:31:55

回答

1

http://www.avaje.org/ebean/introquery_joinquery.html

看来,使用“获取连接”在上面的链路描述的接合时,据推测这是Ebean的行为目前。然而,你可以解决,通过执行“查询加盟”像这样的一对多关系:

List<Order> orders = 
Ebean.find(Order.class) 
    .fetch("customer", new FetchConfig().query()) 
    .findList(); 
+0

我试过了,但没有改变任何东西:/ – 2012-08-16 09:15:10

0

我遇到了同样的问题,并且能够通过添加标识列到辅助表来解决它(ModelB )。我没有调查原因,但我认为Ebean在这种情况下需要桌面上的主键。