java - CriteriaBuilder JPA 2.0 Eclipse链接

标签 java orm eclipselink jpa-2.0

如果我想要类似 EclipseLink 和 JPA 2.0 的东西

SELECT ... FROM ... WHERE name1=value1 AND name2=value2 OR name3=value3

哪种方式最好?在官方中这样说:

cq.where(cb.equal(pet.get(Pet_.name), "Fido")
    .and(cb.equal(pet.get(Pet_.color), "brown");

http://download.oracle.com/javaee/6/tutorial/doc/gjivm.html#gjiwu

但是对于 eclipselink 是不可能的,因为 cb.equal(pet.get(Pet_.name), "Fido")Predicate而不是使用 .and 查询

有什么想法吗?

最佳答案

查看 CriteriaBuilder 上的 API“和”和“或”运算符,因此查询如下所示:

cq.where(cb.and(
    cb.equal(pet.get(Pet_.name), "Fido"),
    cb.equal(pet.get(Pet_.color), "brown")));

使用“name”示例 where 子句调用将是:

cq.where(cb.or(
    cb.and(cb.equal(BeanName_.name1, "value1"),
    cb.equal(BeanName_name2, "value2")),
    cb.equal(BeanName_.name3, "value3")));

如果您想使用参数,只需将硬编码值(即“value1”)替换为参数即可:

cb.parameter(String.class, "value1");

关于java - CriteriaBuilder JPA 2.0 Eclipse链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3617557/

相关文章:

java - 使用 EclipseLink JAXB (MOXy) 解码 XML 时出现 DescriptorException "Missing class indicator field from database row"异常

mysql - Eclipselink - 导致消息 “reconnecting to external connection pool” 后响应时间过长的原因

java - 在静态中声明辅助类方法的原因是什么

java - 带有 'extends' 的泛型迭代器

java - Servlet - java.lang.IllegalStateException : getWriter() has already been called for this response

javascript - Realm 中的模式太多是件坏事吗?

java - hibernate/jpa如何存储一个实体之间的关系

java - 如何获取数组并将所有数字转换为其他数字。 'JAVA'

orm - 子实体类应该有自己的存储库吗?

java - JPA:分离后保留(用于创建实体副本)会混淆 EntityManager 缓存