我有两个课程如下。
@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来完成,我想知道这段代码有什么问题。
答案 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()