gpt4 book ai didi

hibernate - 如何使用 Hibernate 条件查询一个月的日期

转载 作者:行者123 更新时间:2023-12-03 08:16:58 25 4
gpt4 key购买 nike

我需要使用标准来查询数据库。
我正在搜索的数据有一个日期,比如“startDate”,我有一个月份说 1 月份为 0,我需要提取 startDate 有月份 = 0 的所有数据;在 sql 中,我会使用类似 'where month(startDate) = 0' 的东西,但我不知道如何使用 hibernate 条件来做到这一点,如果可能的话。
你能帮助我吗?
谢谢你们。
卢卡。

最佳答案

根据标准,我认为您必须编写自己的表达式类。像这样的东西应该可以工作(不过没有经过测试):

public class MonthEqExpression implements Criterion {

private final String propertyName;
private final int month;

public MonthEqExpression(String propertyName, int month) {
this.propertyName = propertyName;
this.month = month;
}

@Override
public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery)
throws HibernateException {
String[] columns = criteriaQuery.findColumns(propertyName, criteria);
if (columns.length!=1) {
throw new HibernateException("monthEq may only be used with single-column properties");
}
return "month(" + columns[0] + ") = ?";
}

@Override
public TypedValue[] getTypedValues(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException {
return new TypedValue[] {new TypedValue(IntegerType.INSTANCE, month, EntityMode.POJO)};
}

@Override
public String toString() {
return "month(" + propertyName + ") = " + month;
}
}

然后,您可以在条件中使用此表达式:
criteria.add(new MonthEqExpression("startDate", 0));

关于hibernate - 如何使用 Hibernate 条件查询一个月的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5418524/

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