gpt4 book ai didi

java - 在某些情况下,Hibernate 标准与所有内容相匹配

转载 作者:行者123 更新时间:2023-12-02 08:24:47 25 4
gpt4 key购买 nike

是否可以做类似的事情

criteria.add(Expression.eq("product", " * "))  

让它匹配一切?

如果您得到一个可以有多个值的变量和一个与所有内容匹配的特殊值“all”,这会很方便。因此,您可以调用这样的方法,如果变量的值为“all”,则表达式将匹配所有内容。

public void someFunction(String variable) {

criteria.add(Expression.eq("product", variable))

}

编辑:如果我有 2 个带有源语言和目标语言的选择字段以及一个根据其包含的语言组合列出条目的表,带有 IF 语句,它看起来像这样:(DynamicQuery 是 Criteria 的抽象)

private DynamicQuery addCriteria(DynamicQuery dq, String languageFrom, String languageTo){

if (null != languageFrom && !languageFrom.isEmpty() && null != languageTo && !languageTo.isEmpty()){

if(languageFrom.equals("All") && languageTo.equals("All")) {
return dq;
} else if (!languageFrom.equals("All") && !languageTo.equals("All")) {
dq.add(PropertyFactoryUtil.forName("languageFrom").eq(languageFrom));
dq.add(PropertyFactoryUtil.forName("languageTo").eq(languageTo));
return dq;
} else if (languageFrom.equals("All") && !languageTo.equals("All")) {
dq.add(PropertyFactoryUtil.forName("languageTo").eq(languageTo));
return dq;
} else if (!languageFrom.equals("All") && languageTo.equals("All")) {
dq.add(PropertyFactoryUtil.forName("languageFrom").eq(languageFrom));
return dq;
}
}
}

这很恶心,考虑到还会有一个字段,那就更恶心了...一个必须涵盖所有可能发生的组合...这就是为什么我想要像 REGEX 这样的东西,因为我会为变量分配 reqex "*"值,我会添加两行,如下所示

dq.add(PropertyFactoryUtil.forName("languageFrom").eq(languageFromVariable));
dq.add(PropertyFactoryUtil.forName("languageTo").eq(languageToVariable));

最佳答案

if (null != variable && !variable.isEmpty()){
criteria.add(Expression.eq("product", variable)) ;
}

如果您仅在选择时才需要它。您可能想添加一个 if 语句,以便仅在需要时添加条件。

编辑1:

如果您要将其用于多个字段,则可以定义一个方法。您甚至可以在此处定义不同的标准。易于维护(所有人都使用且集中),代码重用(某一点的更改将对所有人有效)

addCriteria(Criteria criteria, String name, String value){

//you wanna handle special cases like null == name as well accordingly

if (null != value && !value.isEmpty() && null != name && !name.isEmpty()){
criteria.add(Expression.eq(name, value)) ;
}
}

关于java - 在某些情况下,Hibernate 标准与所有内容相匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4749225/

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