gpt4 book ai didi

java - Hibernate org.hibernate.criterion.Example.create OR 子句

转载 作者:行者123 更新时间:2023-11-30 08:21:48 29 4
gpt4 key购买 nike

我正在使用 org.hibernate.criterion.Example.create从我的实体对象创建我的查询。一切都很好,但是使用这种方法创建的 SQL 仅在限制之间带有 AND 子句。

是否可以使用 org.hibernate.criterion.Example.create但有 OR 子句?

最佳答案

简短的回答是否定的,你不能这样做,但你可以实现一个OrExample,这很容易,只需要检查Example的源代码并更改and 用于 or(参见 sourcecode 第 329 行)。由于这些方法受到保护,您可以扩展它并只覆盖必要的方法。

像这样:

public class OrExample extends org.hibernate.criterion.Example {

@Override
protected void appendPropertyCondition(
String propertyName,
Object propertyValue,
Criteria criteria,
CriteriaQuery cq,
StringBuffer buf)
throws HibernateException {
Criterion crit;
if ( propertyValue!=null ) {
boolean isString = propertyValue instanceof String;
if ( isLikeEnabled && isString ) {
crit = new LikeExpression(
propertyName,
( String ) propertyValue,
matchMode,
escapeCharacter,
isIgnoreCaseEnabled
);
}
else {
crit = new SimpleExpression( propertyName, propertyValue, "=", isIgnoreCaseEnabled && isString );
}
}
else {
crit = new NullExpression(propertyName);
}
String critCondition = crit.toSqlString(criteria, cq);
if ( buf.length()>1 && critCondition.trim().length()>0 ) buf.append(" or ");
buf.append(critCondition);
}

请参阅 or 而不是原来的 and

关于java - Hibernate org.hibernate.criterion.Example.create OR 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24924112/

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