标签: criteria

你喜欢JPA 2.0的Criteria api吗?你在框架中使用它吗?

我习惯在Hibernate中使用Criteria API,只是看看JPA 2.0中的Criteria如何工作.

我最喜欢的Hibernate标准是我们必须轻松地与Criterions合作.

JPA Criteria对我来说似乎相当沉重,并不像Hibernate Criteria那样流畅.对我来说,与Hibernate相比的一个主要好处似乎是使用了元模型(Entity_.java类),但是由于你必须维护2个类,或者添加一个注释处理器(尽管很容易),它仍然有点沉重.与maven插件集成)

我已经阅读了一篇关于SpringSource的博客,该博客允许使用"JPA Predicates"降低编写的复杂性,并且有点像Hibernate中的Criterions.

Querydsl项目似乎很有趣.

http://blog.springsource.com/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/

只是想知道,对于那些使用JPA2的人来说,你使用的是Criteria API还是对你来说有点太重了?

对于熟悉Hibernate Criteria并且现在使用JPA Criteria的人来说,您最喜欢Dowhich方法,为什么?

您是否考虑使用或使用Querydsl或Spring Specifications over JPA2等框架来构建查询谓词?您认为这些框架是否足够成熟以至于被采用?

java hibernate jpa criteria jpa-2.0

18
推荐指数
3
解决办法
6955
查看次数

Grails/GORM"in"标准

是否可以使用GORM标准执行"in"标准.我正在寻找以下SQL的等价物

select * from Person where age in (20,21,22);
Run Code Online (Sandbox Code Playgroud)

如果有可能,我猜语法将是这样的:

def results = Person.withCriteria {
    in "age", [20, 21, 22]
}
Run Code Online (Sandbox Code Playgroud)

grails hibernate criteria grails-orm

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

无法强制转换为java.io.Serializable

我目前正在使用条件来检索用户的详细信息,但在尝试使用正确的用户查询详细信息对象时,我得到了ClassCastException.

我的标准代码;

Criteria criteria = sess.createCriteria(UserDetails.class)
criteria.add(Restrictions.eq("user.id", user.id));
Run Code Online (Sandbox Code Playgroud)

我也试过用;

Criteria criteria = sess.createCriteria(UserDetails.class)

Criteria subCriteria = criteria.createCriteria("user");
subCriteria.add(Restrictions.eq("id", user.id));
Run Code Online (Sandbox Code Playgroud)

两者都给我ClassCastException.我知道我可以通过让用户实现Serializable来轻松解决它,但还有其他解决方案吗?

java hibernate criteria

17
推荐指数
4
解决办法
3万
查看次数

许多关系的jpa标准

我在Java,Answer和Collaborator中有2个POJO类,处于多对多关系中.

class Answer {
    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "ANSWERS_COLLABORATORS", joinColumns = { @JoinColumn(name = "aid") }, inverseJoinColumns = { @JoinColumn(name = "cid") })
    private Set<Collaborator> collaborators = new HashSet<Collaborator>(0);
} 
Run Code Online (Sandbox Code Playgroud)

Answer有一套Collaborator,但是Collaborator不保留一套Answer.我需要从Hibernate做的CriteriaQuery是找到id给出的答案的协作者.

我已经使用结果转换器在Hibernate Criteria(org.hibernate.Criteria)中完成了这个,但是在使用时我遇到了困难CriteriaQuery,因为我没有给出连接的答案列表.

java many-to-many hibernate criteria jpa-2.0

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

Hibernate标准投射明显

您好我想使用条件编写查询:必须使用条件创建以下查询:

"从S2中选择Distinct(s2Taxper),其中s2Tc ='601'和s2Txcd!=''"

提前致谢

hibernate criteria

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

如何对JPA查询进行分页

我有样柱提交表格ID,Name,Code等性质.我的要求是根据提到的属性搜索记录并返回一个分页集.

这是我正在寻找的伪代码:

searchSubmission(searchFilter sf,pageIndex,noOfRecords) {
   query = 'from submisssion where code=sf.code or id=sf.id order by id start_from (pageIndex*noOfRecords) limit noOfRecords'
   return result();
}
Run Code Online (Sandbox Code Playgroud)

似乎有许多选项,例如CriteriaBuilder,NamedQuery等等.在这种情况下哪个是最有效的?

java orm pagination jpa criteria

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

使用hibernate标准,有没有办法逃避特殊字符?

对于这个问题,我们希望避免编写特殊查询,因为查询必须在多个数据库之间不同.仅使用休眠标准,我们希望能够转义特殊字符.

这种情况是需要能够转义特殊字符的原因:

假设我们在数据库中有表'foo'.表'foo'只包含1个字段,称为'name'."名称"字段可以包含在数据库中可能被视为特殊的字符.这种名称的两个例子是'name_1'和'name%1'."_"和"%"都是特殊字符,至少在Oracle中是这样.如果用户想要在数据库中输入这些示例之后搜索其中一个示例,则可能会出现问题.

criterion = Restrictions.ilike("name", searchValue, MatchMode.ANYWHERE);
return findByCriteria(null, criterion);
Run Code Online (Sandbox Code Playgroud)

在此代码中,'searchValue'是用户为应用程序提供的用于搜索的值.如果用户想要搜索'%',则将返回用户数据库中的每个'foo'条目.这是因为'%'字符表示字符串匹配的"任意数量的字符"通配符,而hibernate生成的SQL代码将如下所示:

select * from foo where name like '%' 
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉hibernate逃避某些字符,或创建一个非数据库类型特定的解决方法?

java database hibernate criteria escaping

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

Hibernate条件查询不同对象的不同属性

假设我有以下课程:

class A {
 B getB();
 C getC();
}

class B {
 String getFoo();
}

class C {
 int getBar();
}
Run Code Online (Sandbox Code Playgroud)

我想在A上过滤标准,在不同的子类属性上有两个过滤器,例如:

Criteria criteriaA = session.createCriteria(A.class);
Criteria criteriaB = criteriaA.createCriteria("b").add(Restrictions.eq("foo", "Something"));
Criteria criteriaC = criteriaA.createCriteria("c").add(Restrictions.eq("bar", 0));
Run Code Online (Sandbox Code Playgroud)

我想要做的是使用"或"子句组合criteriaB和criteriaC,如:

//this does not work
criteriaA.add(Restrictions.disjunction().add(criteriaB).add(criteriaC));
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?我在这里绊倒了一些API.

java hibernate criteria

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

使用JPA Criteria构建器的复杂查询

有人可以建议我如何使用JPA Criteria构建器API构建以下查询吗?

SELECT id,status,created_at from transactions where status='1' 
   and currency='USD' and appId='123' order by id
Run Code Online (Sandbox Code Playgroud)

如果我能找到一个基于作为Map<String,String>使用元模型类或任何其他方式给出的参数动态创建的解决方案,那就更好了.

java jpa criteria builder

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

Hibernate Criteria Order By

我有一个名为Gift的表,它与一个名为ClickThrough的表有一对多的关系 - 表示特定Gift被点击的次数.我需要查询按ClickThrough计数排序的所有Gift对象.我不需要返回ClickThrough计数,因为我不需要做任何事情,我只想将它用于订购目的.

我需要查询直接返回一个Gift对象列表,只是按ClickThrough计数排序.如何使用Criteria API执行此操作?我可以在这里找到很多关于类似信息的文档,但没有什么比我需要的更多.

java hibernate criteria

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