gpt4 book ai didi

mysql - 如何将值传递给hibernate的sqlRestriction?

转载 作者:可可西里 更新时间:2023-11-01 07:32:43 31 4
gpt4 key购买 nike

我需要根据几个不同的限制检索项目,一个是代码为 234,另一个是计算的数量小于 10,但我不确定如何将值传递给 sqlRestrictions 方法。

我正在使用 {alias} 但它传递的是 Item 而不是城市。

List<Store> stores = (List<Store>) sessionFactory.getCurrentSession()
.createCriteria(Item.class)
.createAlias("Address", "address")
.createAlias("address.myJoinTable.city", "city")
.setProjection(pl)
.add(Restrictions.eq("address.myJoinTable.city",
session.load(City.class, myId)))
.add(Restrictions
.sqlRestriction("SELECT (
{alias}.id * {alias}.code * "
+ mynumber1 + " * " + mynumber2 + ")
as number from city
HAVING number < 10")
.setResultTransformer(
new AliasToBeanResultTransformer(Store.class))
.list();

最佳答案

您可以使用 public static Criterion sqlRestriction(String sql, Object value, Type type)如果你只需要传递一个值。使用公共(public)静态 Criterion sqlRestriction(String sql, Object[] values, Type[] types)对于多个值。

例如:

Type[] tipos = {IntegerType.INSTANCE, IntegerType.INSTANCE};
Integer[] values = {1, 2};

criteria.add(Restrictions.sqlRestriction("SELECT ({alias}.id * {alias}.code * ? * ?) AS number FROM city HAVING number < 10", values, tipos ));

关于mysql - 如何将值传递给hibernate的sqlRestriction?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29482880/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com