Hibernate 如何使用JPA2中的示例对象获取数据
我正在使用Hibernate3.5.6和JPA2 这是我的密码:Hibernate 如何使用JPA2中的示例对象获取数据,hibernate,jpa-2.0,criteria-api,query-by-example,Hibernate,Jpa 2.0,Criteria Api,Query By Example,我正在使用Hibernate3.5.6和JPA2 这是我的密码: public List<Route> searchRoutesEndingAt(GeoLocation destinationLocation, int destinationRangeInMeters, RouteUserPref routeUserPref) { Query query = entityManager.createNamedQuery("searchRoutesEndin
public List<Route> searchRoutesEndingAt(GeoLocation destinationLocation,
int destinationRangeInMeters, RouteUserPref routeUserPref) {
Query query = entityManager.createNamedQuery("searchRoutesEndingAt");
query.setParameter("lat1", destinationLocation.getLatitude());
query.setParameter("lng1", destinationLocation.getLongitude());
query.setParameter("destinationRangeInMeters", destinationRangeInMeters);
try {
return query.getResultList();
} catch (NoResultException ex) {
return null;
}
}
公共列表搜索路由搜索,
int目的地测距仪,RouteUserPref RouteUserPref){
Query Query=entityManager.createNamedQuery(“searchRoutesEndingAt”);
setParameter(“lat1”,destinationLocation.getLatitude());
setParameter(“lng1”,destinationLocation.getLongitude());
query.setParameter(“destinationRangeInMeters”,destinationRangeInMeters);
试一试{
返回query.getResultList();
}捕获(noresultex异常){
返回null;
}
}
在上面的代码中,我想根据routeUserPref筛选结果集,routeUserPref具有各种属性。您可以使用Criteria API尝试以下代码
Criteria criteria = session.createCriteria(RouteUserPref.class).add(routeUserPref);
return criteria.list();
您将无法使用EntityManager afaik执行此操作,因为它未包含在标准中 然而,我认为所有供应商都实施了它,对您来说,它将是这样的: 冬眠 使用Hibernate的标准API:
// get the native hibernate session
Session session = (Session) getEntityManager().getDelegate();
// create an example from our customer, exclude all zero valued numeric properties
Example customerExample = Example.create(customer).excludeZeroes();
// create criteria based on the customer example
Criteria criteria = session.createCriteria(Customer.class).add(customerExample);
// perform the query
criteria.list();
摘自:
顺便说一句,他在openjpa上的例子是不完整的。如果需要更好的版本,请在评论中Ping我。我使用的是实体管理器,我没有直接访问hibernate会话的权限。所以这行不通。