Java 在JPA中如何使用用例
我是JPA新手,有以下JPA查询:Java 在JPA中如何使用用例,java,jpa,Java,Jpa,我是JPA新手,有以下JPA查询: String qry = " SELECT e from Event e" + " WHERE e.meeting.meetingDate= :pdate" + " AND e.meeting.feedId IN (1,2)" + " AND e.status <> 'W'" + " AND
String qry = " SELECT e from Event e"
+ " WHERE e.meeting.meetingDate= :pdate"
+ " AND e.meeting.feedId IN (1,2)"
+ " AND e.status <> 'W'"
+ " AND e.meeting.status ='A'"
+ " AND e.settleStatus is NULL"
+ " AND e.offTime is NULL"
+ " AND e.eventCode >'07:45:00'"
+ " group by e.id";
String qry=“从事件e中选择e”
+“其中e.meeting.meetingDate=:pdate”
+“和(1,2)中的e.meeting.feedId”
+“和e.状态‘W’”
+“和e.meeting.status='A'”
+“而e.settleStatus为空”
+“和e.offTime为空”
+“和e.eventCode>'07:45:00'”
+“按e.id分组”;
我需要动态地添加ORDER BY子句。我使用MySQL,请任何人告诉我如何使用JPA将以下条件添加到我的查询中
要添加的部件:
ORDER BY
CASE WHEN m.country_code ='AU' THEN e.timestamp_updated
WHEN m.country_code <> 'AU' THEN e.event_code
END DESC
orderby
当m.country_code='AU'然后e.timestamp_更新时的情况
当m.country\u代码为“AU”时,则e.event\u代码
结束描述
如何将此查询段添加到我的JPA查询中?因为JPA 2.0,所以在JPQL中可以使用CASE 所以你只需要做这样的事情:
ORDER BY
CASE
WHEN (e.property = ?) THEN 1
WHEN (e.property = ?) THEN 2
ELSE 3
END DESC
您还可以使用标准API
Criteria criteria = session.createCriteria(YourEntity.class);
if(clause){
criteria.addOrder( Order.asc("property_desired_1") );
}else{
criteria.addOrder( Order.asc("property_desired_2") );
}
criteria.list();
您可以使用更多关于条件、关于JPQL CASE WHEN和关于Order的信息为其创建一个过程,然后通过entityManager.createNativeQuery(storedProcedure)调用此过程;你能用一个例子来解释或帮助我吗?创建一个存储过程很简单,之后我会告诉你下一步,尽管JPA2.x在JPQL中支持
CASE
,但在ORDER by
子句中不支持它。不过,这可能没有引起注意,因为Hibernate的JPQL实现确实支持CASE
中的orderby
。