我有一个实体类
@Entity
public class Status{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="STATUS_SEQ")
Long id;
String statusValue;
@Convert(converter = LocalDateConverter.class)
LocalDate date;
//some other attributes
//getter and setters
}
statusValue
可以包含OPEN,CLOSE,NEW,HOLD,INPROGRESS等不同状态
注意:我还实现了自定义物理命名策略,即为所有表添加前缀t_,为所有列添加前缀c_,因此数据库和实体中的列名不是sam
问题:我正在尝试查找不同状态下一个月的日期明智计数。我用SQL编写了以下查询。
SELECT c_status_value,
EXTRACT(DAY FROM c_date),
COUNT(this_.c_status_value)
FROM t_status
WHERE
EXTRACT(MONTH FROM c_date) = 12
GROUP BY c_status_value,EXTRACT(DAY FROM c_date);
现在在代码中,我不想编写一个本机查询,但想在休眠状态下写一些东西。我尝试使用Criteria
,但是在extract
中使用日期字段时,它未应用命名策略,最终EXTRACT(DAY FROM date)
无效,因为数据库中没有字段为date
。
criteria.add(Restrictions.sqlRestriction("EXTRACT(MONTH from {alias}.date) = (:?)", month,tipos));
我也乐意接受任何可以每天为我提供结果的解决方案。
答案 0 :(得分:0)
在您的JpaRepository工作时,您只需在您的存储库中添加一个函数
Project NATURAL JOIN Workon
您尝试过类似的事情吗?