Java JPA查询语言标准生成器
我已经在EJB容器中使用JPA构建了一个应用程序。 这是我的密码Java JPA查询语言标准生成器,java,jpa,glassfish,ejb,jpa-2.0,Java,Jpa,Glassfish,Ejb,Jpa 2.0,我已经在EJB容器中使用JPA构建了一个应用程序。 这是我的密码 @PersistenceContext(unitName = "damate-pu") private EntityManager em; @Override public Workspace find(String username, String path) { CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder(); CriteriaQuery
@PersistenceContext(unitName = "damate-pu")
private EntityManager em;
@Override
public Workspace find(String username, String path) {
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Workspace> criteriaQuery = criteriaBuilder.createQuery(Workspace.class);
Root<Workspace> from = criteriaQuery.from(Workspace.class);
Predicate condition = criteriaBuilder.equal(from.get("Username"), username);
Predicate condition2 = criteriaBuilder.equal(from.get("Path"), path);
Predicate condition3 = criteriaBuilder.and(condition, condition2);
criteriaQuery.where(condition3);
Query query = em.createQuery(criteriaQuery);
return (Workspace) query.getSingleResult();
}
你试过使用元模型吗
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
Metamodel m = em.getMetamodel();
EntityType<Workspace> WS = m.entity(Workspace.class);
CriteriaQuery<Workspace> criteriaQuery = criteriaBuilder.createQuery(Workspace.class);
Root<Workspace> from = criteriaQuery.from(Workspace.class);
Predicate condition = criteriaBuilder.equal(from.get(WS.username), username);
CriteriaBuilder-CriteriaBuilder=em.getCriteriaBuilder();
元模型m=em.getMetamodel();
EntityType WS=m.entity(Workspace.class);
CriteriaQuery CriteriaQuery=criteriaBuilder.createQuery(Workspace.class);
Root-from=criteriaQuery.from(Workspace.class);
谓词条件=criteriaBuilder.equal(from.get(WS.username),username);
在构建条件查询(或在字符串中构建jpql)时,您希望使用实体属性名称,而不是列名。您的数据库列名为“Username”,但工作区对象的属性为“Username”,不带大写字母U。
CriteriaBuilder-CriteriaBuilder=entityManager.getCriteriaBuilder();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<> criteriaQuery = criteriaBuilder
.createQuery(Date.class);
Root<test> root = criteriaQuery.from(test.class);
criteriaQuery.select(criteriaBuilder.greatest(root
.<Date> get("Starttime")));
criteriaQuery.where(
criteriaBuilder.equal(root.get("columnName 1"), filtervalue),
criteriaBuilder.equal(root.get("columnName 2"), Filtervalue));
TypedQuery<Date> query = entityManager.createQuery(criteriaQuery);
Date date = query.getSingleResult();
CriteriaQuery CriteriaQuery=criteriaBuilder
.createQuery(Date.class);
Root=criteriaQuery.from(test.class);
criteriaQuery.select(criteriaBuilder.magest(root
.get(“Starttime”);
criteriaQuery.where(
criteriaBuilder.equal(root.get(“columnName 1”)、filtervalue),
equal(root.get(“columnName 2”),Filtervalue);
TypedQuery=entityManager.createQuery(criteriaQuery);
日期=query.getSingleResult();
我无法从WS获取用户名。为什么?抱歉,错过了正确的元模型文档页面
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<> criteriaQuery = criteriaBuilder
.createQuery(Date.class);
Root<test> root = criteriaQuery.from(test.class);
criteriaQuery.select(criteriaBuilder.greatest(root
.<Date> get("Starttime")));
criteriaQuery.where(
criteriaBuilder.equal(root.get("columnName 1"), filtervalue),
criteriaBuilder.equal(root.get("columnName 2"), Filtervalue));
TypedQuery<Date> query = entityManager.createQuery(criteriaQuery);
Date date = query.getSingleResult();