jpa jpql查询OneToMany关系

时间:2014-06-09 15:16:23

标签: java jpa entity jpql

我有两个实体对象

对象1

@Entity
MyInfo
String key;
String eMail;
String status;
@OneToMany(mappedBy="myInfo")
private List<MyInfoRequest>  myInfoRequests;

对象2

@Entity
MyInfoRequest
String key;
String dataA;
String dataB;
String dataC;
@ManyToOne
@JoinColumn(name="KEY")
MyInfo myInfo;

我尝试使用EntityManager

创建Query(JPQL)

将给我所有状态=“1”的MyInfo和myInfoRequest.dataA =“BIG” 但我得到的是所有myInfoRequest.dataA =“BIG”和MyInfo具有相同的信息 (我当然得到MyInfo对象列表的结果)

这是我尝试的

SELECT x from MyInfo x,MyInfoRequest b where b.dataA=:dataA AND x.status=:status

我正在使用jpa 1.0。 和OpenJPA 1.2.1

1 个答案:

答案 0 :(得分:0)

尝试以下查询:

...
String qlString = "SELECT x "
                + "FROM MyInfo x JOIN x.myInfoRequests b "
                + "WHERE x.status = :status AND b.dataA = :dataA";
List<MyInfo> result = em.createQuery(qlString)
                        .setParameter("status", "1")
                        .setParameter("dataA", "BIG")
                        .getResultList();