使用ParameterExpression作为In子句的一部分
我想使用参数表达式作为in子句的一部分。 我想查询一个包含一组条形图中的条形图的Foo列表。 这可能吗?
Foo // Join, ManyToOne Bar getBar() Query ParameterExpression barParameter; void setup() { CriteriaBuilder builder = ... CriteriaQuery criteria = ... Root root = ... barParameter = builder.parameter(???); criteria.where( builder.in(root.get(Foo_.bar)).value(barParameter) ); } List query(Set bars) { TypedQuery query = createQuery(); query.setParameter(barParameter, bars); return query.getResultList(); }
在in
表达式中,您只能使用原始比较类型,因此您需要进行连接并比较基本类型的字段(这里我使用了Integer id
):
Root foo = cq.from(Foo.class); Join bar = foo.join(Foo_.bar); ParameterExpression bars = cb.parameter(Collection.class); cq.where(bar.get(Bar_.id).in(bars)); TypedQuery tq = em.createQuery(cq); Collection barsParameter = new ArrayList (); barsParameter.add(1); List resultList = tq.setParameter(bars, barsParameter).getResultList();
- Hibernate:无法执行本机批量操作查询
- Hibernate通用DAO,通用服务和通用视图层?
- 错误的布尔映射Hibernate(ArrayIndexOutOfBoundsException)
- Hibernate @OneToMany抛出MySQLSyntaxErrorException:您的SQL语法中有错误
- Spring,@ Transactal和Hibernate Lazy Loading
- 基于Hibernate的Java Servlet应用程序中的Hibernate Communications Link失败,由MySQL提供支持
- Spring REST,JSON“无法处理托管/后向引用’defaultReference’”415不支持的媒体类型
- 无法创建PoolableConnectionFactory
- hibernate的替代品