我知道自带的一些基本方法 比如findAll()
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
return getEntityManager().createQuery(cq).getResultList();
但是仍然不明白 怎么使用where查询 比如查询学生年纪大于18的所有学生数据 或者多表连接查询 left join right join等等
我现在的做法是 因为返回的都是List<T>嘛。。。我就直接操作list里头数据了 比如删掉没用的 或者取2个list交集
------最佳解决方案--------------------
那和WebService有P关系,那叫JPA,做增删改查的。
JPA有自己的provider,用哪个provider,就用哪个provider的套路去做事,基本可以直接参照Hibernate。
------其他解决方案--------------------
这个JPA的查询结果最终是要用于webservice的? 否则貌似是没啥关联
看下
import javax.persistence.EntityManager;
import javax.persistence.Query;
import org.apache.commons.lang.StringUtils;
...
@SuppressWarnings("unchecked")
public List<Author> getAuthorsByLastName(String lastName) {
String queryString = "SELECT a FROM Author a " +
"WHERE :lastName IS NULL OR LOWER(a.lastName) = :lastName";
Query query = getEntityManager().createQuery(queryString);
query.setParameter("lastName", StringUtils.lowerCase(lastName));
return query.getResultList();
}
------其他解决方案--------------------
分层,接口层(restful session bean), 业务逻辑层, ORM层(session Bean实现,除了创建、get、更新、删除等基本方法,主要是增加业务逻辑层需要的各种查询),JPA映射关系
接口层处理输入输出对象校验和赋值,然后调用业务逻辑层处理业务动作,业务逻辑层需要的对象操作(创建、get、更新、删除、查询),在ORM层实现