草庐IT

Criteria1

全部标签

java - Criteria API 中有类似 Restrictions.eq(true, false) 的东西吗?

我需要一个通用的Criterion,它强制结果为零匹配。类似于Restrictions.eq(true,false)吗? 最佳答案 我在NHibernate(C#)中使用:Restrictions.Sql("(1=0)");或在Hibernate(Java)中:Restrictions.sqlRestriction("(1=0)");:-) 关于java-CriteriaAPI中有类似Restrictions.eq(true,false)的东西吗?,我们在StackOverflow上找到

java - Criteria eager fetch-joined 集合以避免 n+1 选择

假设Item和Bid是实体:一个Item有很多Bids。它们以典型的父/子关系映射到Hibernate中:...在执行此查询后尝试访问每个项目的出价时,如何避免n+1选择?Listitems=session.createCriteria(Item.class).createAlias("bids","b")..add(Restrictions.gt("b.amount",100))..list();注意我需要一个eagerfetching出价但对集合有进一步的限制(b.数量>100)我试过以下方法失败了:Listitems=session.createCriteria(Item.cla

java - 在 JPA Criteria API 中使用 ParameterExpression 与变量

使用JPACriteriaAPI时,直接使用ParameterExpression而不是变量的优势是什么?例如。当我希望在String变量中按姓名搜索客户时,我可以编写如下内容privateListfindCustomer(Stringname){CriteriaBuildercb=em.getCriteriaBuilder();CriteriaQuerycriteriaQuery=cb.createQuery(Customer.class);Rootcustomer=criteriaQuery.from(Customer.class);criteriaQuery.select(cus

java - Hibernate Criteria 从日期中提取年份

我正在创建一个hibernate条件,用于检查契约(Contract)在一年内是否有效。契约(Contract)将开始日期和结束日期作为标准日期字段。所以习惯了SQL-SERVER,我会想到这个SQL中的一些内容:SELECT*FROMCONTRACTWHEREYEAR(startDate)=?问号是整数形式的给定年份。那么如何将其转换为hibernate条件呢?intyear=2011;//Justatestyearforexamplepurposes.DetachedCriteriacriteria=DetachedCriteria.forClass(Contract.class)

Java - Hibernate criteria.setResultTransformer() 使用默认值初始化模型字段

我是Hibernate的新手,我想从数据库中获取一些数据。我不想得到完整的数据,而是一个实体的投影。问题是,在for循环中,当我获取投影的id和名称时,它获取默认值id=0和name=null而不是id=7和name="Name8"原始实体在数据库中的记录。你知道是什么原因导致这个问题吗?for循环在最后的代码中。这是学生实体@Entity(name="Students")publicclassStudent{@Id@GeneratedValue@Column(name="StudentId")privateintid;@Column(name="Name",nullable=fals

java - Criteria API 返回的结果集太小

这怎么可能,我必须遵循以下标准Criteriacriteria=getSession().createCriteria(c);criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);criteria.add(Restrictions.eq("active",true));Listlist=criteria.list();Thesizeoflistisnow20.IfIaddamaxresultstothecriteria,Criteriacriteria=getSession().createCriteria(c);cr

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

我想知道是否可以创建这样的查询:em.createQuery("SELECTNEWEmpMenu(p.name,p.department.name)"+"FROMProjectp").getResultList();也可以通过规范来做到这一点:publicPredicatetoPredicate(Rootroot,CriteriaQueryquery,CriteriaBuildercb){return???;}提前致谢! 最佳答案 是的,CriteriaAPI确实具有类似于JPQL构造函数表达式的构造。结果类通过construct设

java - 如何使用 Hibernate Criteria 延迟获取字段

Person表(具有name、firstname和age)的每一行都应被读取。EntityManagerem=emf.createEntityManager();Sessions=(Session)em.getDelegate();Criteriacriteria=s.createCriteria(Person.class);criteria.setFetchMode("age",FetchMode.SELECT);但是SQL显示Hibernate:selectperson0_.name,person0_.firstname,person0_.agefromSCOPE.PERSONpe

java - 如何使用 JPA Criteria API 加入不相关的实体

两个数据库表有外键关系。它们被JPA映射到两个实体A和B,但是连接列是从实体中手动删除的,所以在JPA世界类A和B不相关,您无法通过字段/属性从一个导航到另一个。使用JPACriteriaAPI,是否可以创建连接两个表的查询?我在Internet上找到的所有示例都使用连接列来实现目标,但是,如上所述,它已从代码中删除,因为大多数时候我对A之间的关系不感兴趣和B,我担心可能的开销。 最佳答案 第一:外键关系不仅仅是为了导航。它们主要用于确保不会在关系中引入虚假值。它们还可以帮助数据库进行查询优化。我建议您重新考虑一下。无论如何,要创建

java - 使用 JPA Criteria 构建器进行复杂查询

有人可以建议我如何使用JPACriteriabuilderAPI构建以下查询吗?SELECTid,status,created_atfromtransactionswherestatus='1'andcurrency='USD'andappId='123'orderbyid如果我能找到一个基于给定参数动态创建的解决方案,那就更好了Map使用元模型类或任何其他方式。 最佳答案 是这样的(没有元模型):Mapparams=...;CriteriaBuildercb=em.getCriteriaBuilder();CriteriaQuer