标签: criteria-api

规范中的spring-data子查询

Spring数据,Oliver Gierke的优秀库,有一个叫做规范(org.springframework.data.jpa.domain.Specification)的东西.有了它,您可以生成多个谓词来缩小搜索条件.

有人可以提供在规范中使用子查询的示例吗?

我有一个对象图,搜索条件可能非常多毛.我想使用规范来帮助缩小搜索范围,但我需要使用子查询来查看对象图中的某些子元素(在集合中)是否满足我的搜索需求.

提前致谢.

spring subquery criteria-api spring-data

16
推荐指数
1
解决办法
2万
查看次数

Criteria Builder在Select语句中创建新对象

我想知道是否有可能创建这样的查询:

em.createQuery(
        "SELECT NEW EmpMenu(p.name, p.department.name) "
            + "FROM Project p ").getResultList();
Run Code Online (Sandbox Code Playgroud)

也可以通过规范来做到这一点:

public Predicate toPredicate(Root<T> root, CriteriaQuery<?> query,
        CriteriaBuilder cb) {


    return ???;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

java hibernate jpql criteria-api jpa-2.0

16
推荐指数
1
解决办法
1万
查看次数

使用Java泛型进行JPA findAll()查询和WHERE子句

因此,经过10年多的休整,我将回到Java并尝试使用JPA和Java泛型.我已经创建了一个基于泛型的findAll(other)JPA查询

SELECT * FROM source WHERE other_id = other.id;
Run Code Online (Sandbox Code Playgroud)

这是我要去的地方.它有效,但我想知道是否有更好,更清洁的方法来做到这一点.使用ManagedType很难,并没有太多完整的文档或简单的例子.

我决定尽可能保持我的代码通用(没有双关语),所以我使用JPA2.

这是所有实体类的根.我可能不需要它,但它阻止我有基本的错误.

import java.io.Serializable;

public abstract class DomainObject implements Serializable {

    private static final long serialVersionUID = 1L;

    public abstract void setId(Long id);
    public abstract Long getId();

}
Run Code Online (Sandbox Code Playgroud)

这是抽象的DAO类.我为实现类扩展了这个,因为我需要更具体地做其他活动 - 主要是确保加载延迟集.

public abstract class GenericDAOImpl<T extends DomainObject, T2 extends DomainObject> implements GenericDAO<T, T2> {

private Class<T> type;

@PersistenceContext
protected EntityManager entityManager;

public GenericDAOImpl(Class<T> type) {
    super();
    this.type = type;
}

... save and delete classes go …
Run Code Online (Sandbox Code Playgroud)

java generics jpa criteria-api

16
推荐指数
3
解决办法
8万
查看次数

如何计算子查询返回的行数?

我想做这样的事情:

select count(*) from (select ...)
Run Code Online (Sandbox Code Playgroud)

(就像在SQL中一样),但在JPA中.

关于我将如何做的任何想法?

jpa jpql criteria-api jpa-2.0

15
推荐指数
2
解决办法
3万
查看次数

JPA CriteriaBuilder子查询多选

我在jpa中有关于Subquery类的问题.我需要创建带有两个自定义字段的子查询,但是子查询没有多选方法,而select方法有表达式输入参数(在查询中这是选择)和constact方法不合适.

关于加入子查询结果我也有疑问,有可能吗?怎么样?

我有:

连锁活动

public class Chain {
@Id
@Column(name = "chain_id")
@GeneratedValue(generator = "seq_cha_id", strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name = "seq_cha_id", sequenceName = "SEQ_CHA_ID", allocationSize = 1)
private Long id;
@Column(name = "user_id")
private Long userId;
@Column(name = "operator_id")
private Long operatorId;

@Column(name = "subject")
private String subject;

@OneToMany(fetch = FetchType.LAZY, mappedBy = "chain")
private List<Message> messages;
@Column(name = "status")
private Status status;

public Long getOperatorId() {

    return operatorId;
}

public void setOperatorId(Long operatorId) {
    this.operatorId = operatorId;
}

public …
Run Code Online (Sandbox Code Playgroud)

java jpa criteria criteria-api

15
推荐指数
1
解决办法
5110
查看次数

在List属性上使用没有Metamodel的JPA2条件API

如何在不使用元模型类的情况下制定以下JPA2条件查询:

    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Employee> cq = cb.createQuery(Employee.class);
    Root<Employee> emp = cq.from(Employee.class);
    cq.where(cb.isEmpty(emp.get(Employee_.projects)));
    cq.select(emp);
Run Code Online (Sandbox Code Playgroud)

我想用:

  cq.where(cb.isEmpty(emp.get("projects")));
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何将路径转换为表达式,这是cb.isEmpty所需要的......

谢谢.

java orm jpa criteria-api jpa-2.0

14
推荐指数
1
解决办法
6831
查看次数

JPA 2没有明确的选择,也没有确定隐含的感冒

我正在尝试获取在特定日期之后创建用户的文件夹的所有用户.用户和文件夹之间的关系存在于单独的表中.

这是我提出的查询,但是这个例外就是一个例子

没有明确的选择和隐含的感冒不被确定

代码

@Override
public List<RetailPostUserTbl> getNewUsersForSiteSince( Date date, Integer siteId )
{
    List<RetailPostUserTbl> toReturn = new ArrayList<RetailPostUserTbl>();
    EntityManager em = getEntityManager();
    CriteriaBuilder cb = em.getCriteriaBuilder();

    Class<RpUserFolderMapTbl> userFolderPC = userFolderMapDAO.getPersistentClass();

    CriteriaQuery<RpUserFolderMapTbl> mapQuery = cb.createQuery( userFolderPC );
    Root<RpUserFolderMapTbl> root = mapQuery.from( userFolderPC );
    Path<Integer> folderIdPath = root.get( RpUserFolderMapTbl_.folder ).get( FolderTbl_.folderId );

    Predicate folderCondition = cb.equal( folderIdPath, siteId );

    Subquery<RetailPostUserTbl> rpSubQ = mapQuery.subquery( persistentClass );
    Root<RetailPostUserTbl> subQRoot = rpSubQ.from( persistentClass );
    Path<UserTbl> userPath = subQRoot.get( RetailPostUserTbl_.user );
    Path<Date> userCreatedPath = userPath.get( …
Run Code Online (Sandbox Code Playgroud)

criteria-api jpa-2.0

14
推荐指数
2
解决办法
1万
查看次数

来自Hibernate Session的JPA风格的Criteria/CriteriaBuilder查询

我有一个使用Hibernate 4.x的应用程序,它目前正在使用本机Hibernate API(意思是我有一个SessionFactorySessions).我刚刚注意到现有的Criteria API已被弃用,转而采用JPA(上级)Criteria API:

Hibernate提供了一个较旧的遗留org.hibernate.CriteriaAPI,应该被视为已弃用.没有功能开发将针对这些API.最终,特定于Hibernate的标准功能将被移植为JPA的扩展javax.persistence.criteria.CriteriaQuery.

我不想将我的应用程序转换为EntityManager直接使用(即使Session从那里很容易获得Hibernate )因为我们有大量需要替换的自定义Hibernate配置逻辑.尽管如此,我肯定想开始使用JPA Criteria API,因为旧的API已被弃用(如果过去的Hibernate版本有任何迹象,可能会在未来的某个随机点消失),并且它们也提供了更好的类型安全性.

如果我正在使用SessionFactory/Session,我如何使用新的CriteriaQuery/CriteriaBuilder API?

hibernate jpa criteria-api

14
推荐指数
1
解决办法
3168
查看次数

Criteria API中是否存在类似Restrictions.eq(true,false)的内容?

我需要一个通用的Criterion强制结果零匹配.

有点像Restrictions.eq(true, false)

java hibernate criteria criteria-api

13
推荐指数
2
解决办法
3659
查看次数

是否可以使用相同的CriteriaBuilder(JPA 2)实例创建多个查询?

这似乎是一个非常简单的问题,但我还没有找到一个确定的答案.我有一个DAO类,它通过使用条件查询自然地查询数据库.所以我想知道使用相同的CriteriaBuilder实现来创建不同的查询是否安全,或者我是否必须为每个查询创建新的CriteriaBuilder实例.下面的代码示例应说明我想要做的事情:

public class DAO() {  
    CriteriaBuilder cb = null;

    public DAO() {
        cb = getEntityManager().getCriteriaBuilder();
    }

    public List<String> getNames() {
        CriteriaQuery<String> nameSearch = cb.createQuery(String.class);
        ...
    }

    public List<Address> getAddresses(String name) {
        CriteriaQuery<Address> nameSearch = cb.createQuery(Address.class);
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这样做可以吗?

java jpa criteria-api jpa-2.0

13
推荐指数
1
解决办法
5517
查看次数

标签 统计

criteria-api ×10

java ×6

jpa ×6

jpa-2.0 ×5

hibernate ×3

criteria ×2

jpql ×2

generics ×1

orm ×1

spring ×1

spring-data ×1

subquery ×1