玩2.3 Ebean,@ OneToMany与join的关系

时间:2014-08-22 19:34:35

标签: playframework one-to-many ebean

我有两个课程如下。

@Entity 
public class A extends Model 
{ 
   @Id
   private Long id;
   private String value; 

   @OneToMany(targetEntity = AB.class, mappedBy = "a", cascade=CascadeType.ALL) 
   private List<AB> ab;
}

@Entity 
public class AB extends Model 
{ 
   @Id
   private Long id;

   @ManyToOne(targetEntity = A.class) 
   private A a; 

   private Integer type;
}

我希望获得与AB对象相关的所有A对象,例如类型设置为3。

List<A> aList = A.find.where().join("AB").where().eq("AB.type", "3").findList();  

结果我有错误:

[RuntimeException: Error getting BeanDescriptor for path join ajoin_b from models.A]

我在尝试各种事情,@ JoinTable,@ JoinColumn等

我知道我可以直接通过sql来完成,我想知道这段代码有什么问题。

1 个答案:

答案 0 :(得分:1)

试试这个

A.find.fetch("ab").where().eq("t1.type", 3).findList();

t1让我有一段时间,但生成的SQL似乎使连接表变得清晰。我正在使用PostgreSQL。我认为你不需要引用3,因为AB.type是一个整数(DB中的int)。

这也可能有用。

A.find.where().eq("ab.type",3).findList()