我正在尝试按照第 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 idPath = addressRoot.get(Address_.id); 在文档的第 9.2 节中,PathAddress_.id东西会产生编译错误。
上面的方法返回一个空的类型列表,Tuple
因为它的大小为零,即使它应该包含一些东西。这表明查询失败。有人可以给我建议。