从JPQL select p.name, d.street from Person p join Address d on d = p.address;
TO标准
与构造一个选项:
第一标志在实体的关系 @ OneToOne/@一对多或等。 使用@JoinColumn 即
public class Person {
private Integer id;
private String name;
@JoinColumn(name="id", referencedColumnName = "id")
private Address address;
}
以后 为您的结果类型创建一个班级
public class Result(){
String name;
String street;
/* you must have constructor here for the multi select later */
public Result(String name,String street) {
this.name = name;
thi.street = street
}
}
然后做(EM是实体管理器)
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<PlaceSearch> query = cb.createQuery(PlaceSearch.class);
Root<Person> personRoot = query.from(Person .class);
Join<Person, Address> address= personRoot .join(Person_.address);
/* without meta model
Join<Person, Address> address= personRoot .join(person.get("address"));
*/
/* we know Result has a construct of (String,String) . this is important for the multi select here */
query.multiselect(person.get(Person_.name),address.get(Address_.street);
List<Result> result = em.
的createQuery(查询).getResultList();
来源
2013-12-09 11:45:36
oak
好的,谢谢你的回答。现在我怎么能用这个JPQL做一个Criteria? – Rodrigo