gpt4 book ai didi

hibernate 条件限制 : comparing two properties as simple expression

转载 作者:行者123 更新时间:2023-12-04 00:09:03 25 4
gpt4 key购买 nike

我有一个 Hibernate Criteria,以下适用:

criteria.add(Restrictions.eqProperty("x", "tbl.y"));

但我现在想修改条件以检查一系列可能的值('x' 和 'y' 都是整数),例如,这不起作用:

criteria.add(Restrictions.geProperty("x", "tbl.y - 1"));

我尝试过使用 sqlRestriction,例如:

criteria.add(Restrictions.sqlRestriction("{alias}.x >= (tbl1_.y - 1)"));

但是如何知道实际的别名('tbl1_')?

我是否必须使用子选择才能完成这项工作? (现在使用 HQL 不是一个实用的选择。)

最佳答案

我就是这样解决的:

criteria.add(new PropertyExpression(null, null, null) {
@Override
public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException {
String x = criteriaQuery.getColumnsUsingProjection(criteria, "x")[0];
String y = criteriaQuery.getColumnsUsingProjection(criteria, "tbl.y")[0];
StringBuilder result = new StringBuilder();
result.append(x);
result.append(">= (");
result.append(y);
result.append(" - 1)");
return result.toString();
}
});

遗憾的是,没有办法使用 Hibernate Criteria API 来执行此操作(别名为连接表):

criteria.add(Restrictions.sqlRestriction("{alias}.x >= ({tbl}.y - 1)"));

关于 hibernate 条件限制 : comparing two properties as simple expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14195179/

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