從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