【发布时间】:2015-09-01 13:23:16
【问题描述】:
我遇到了一个很奇怪的问题。我有在 sql server 上执行时完美运行的本机查询:
SELECT date_time, GREATEST(sum(count_up - count_down) OVER (PARTITION BY date_trunc('day', result.date_time) ORDER BY date_time),0) AS cum_amt FROM peoplecounting.result order BY date_time;
但是,在 JPA 中将此查询用作本机查询会导致语法错误
@NamedNativeQueries({@NamedNativeQuery(
name = "Result.getTotal",
query = "SELECT date_time, GREATEST(sum(count_up - count_down) OVER (PARTITION BY date_trunc('day', peoplecounting.result.date_time) ORDER BY date_time),0) AS cum_amt FROM peoplecounting.result order BY date_time;")})
public class Result implements Serializable {...
///
@Entity
@SqlResultSetMapping(name = "TotalResultMapping", entities = {@EntityResult(entityClass = TotalResult.class, fields = {@FieldResult(name = "total", column = "cum_amt"), @FieldResult(name = "date", column = "date_time")})})
public class TotalResult {
private static final long serialVersionUID = 1L;
public TotalResult() {
}
@Id Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
Integer total;
}
打电话时:em.createNativeQuery("Result.getTotal","TotalResultMapping").getResultList();
我明白了:
INFO [stdout] (default task-44) Hibernate: Result.getTotal
WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-44) SQL Error: 0, SQLState: 42601
ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-44) Error: Syntax error at or near "Result"
【问题讨论】:
标签: java hibernate postgresql jpa