【发布时间】:2012-05-11 15:09:50
【问题描述】:
我正在尝试按照chapter 9 的第 9.2 节中给出的示例使用休眠创建一个查询
我尝试的不同之处在于我使用的是 spring MVC 3.0。这是我的地址类以及我创建的方法。
@RooJavaBean
@RooToString
@RooEntity
@RooJson
public class Address {
@NotNull
@Size(min = 1)
private String street1;
@Size(max = 100)
private String street2;
private String postalcode;
private String zipcode;
@NotNull
@ManyToOne
private City city;
@NotNull
@ManyToOne
private Country country;
@ManyToOne
private AddressType addressType;
@Transient
public static List<Tuple> jqgridAddresses(Long pID){
CriteriaBuilder builder = Address.entityManager().getCriteriaBuilder();
CriteriaQuery<Tuple> criteria = builder.createTupleQuery();
Root<Address> addressRoot = criteria.from( Address.class );
criteria.multiselect(addressRoot.get("id"), addressRoot.get("street1"), addressRoot.get("street2"));
criteria.where(builder.equal(addressRoot.<Set<Long>>get("id"), pID));
return Address.entityManager().createQuery( criteria ).getResultList();
}
}
上面调用jqgridAddresses的方法是重点。我选择不使用“Path”,因为当我在文档的第 9.2 节中说 Path idPath = addressRoot.get(Address_.id); 时, PathAddress_.id 东西会产生编译错误。
上面的方法返回一个Tuple 类型的空列表,因为它的大小为零,即使它应该包含一些东西。这表明查询失败。谁能给我建议。
【问题讨论】:
标签: spring hibernate jpa jboss hibernate-criteria