我有几列,其中两列是
@Column(name = "time")
private Timestamp time = null;
@Column(name = "duration")
private long durationinMin = -1;
我要求执行简单的JPA查询为“select * from table where(time + durationinMin)< = SYSDATE”。
有一种简单的方法吗?我们应该能够在所有数据库服务器上运行它。
答案 0 :(得分:0)
使用JPA原生查询:
long t=time.getTime();
long m=durationinMin*60*1000;
Timestamp processedTimestamp = new Timestamp(t+m);
Query query = em.createNativeQuery("SELECT * FROM yourEntityTable WHERE ? <= SYSDATE", YourEntity.class);
query.setParameter(1, processedTimestamp, TemporalType.TIMESTAMP);
List<YourEntity> resultsList = (List<YourEntity>) query.getResultList();
答案 1 :(得分:0)
JPQL对日期的操作有限,基本上是获取时间,日期或日期时间。
functions_returning_datetime:= CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP
参考:http://www.appcoda.com/ios-programming-sidebar-navigation-menu/。