引起原因:org.hibernate.QueryException:无法解析 CAST 请求的类型:INT [ SELECT SUBSTRING(referenceComptable , 8, 14) AS seqNum, SUBSTRING(referenceComptable, 4,7) ASyearCegid, SUBSTRING(referenceComptable, 1,3) AS 期刊来自 com.dso.model.comptabilite.cegid.EtapeJudiciaireLnkFactureActesHonoraires WHERE dateCegidGenelated BETWEEN :date AND :dateYearIntervalDate ORDER BY CAST(seqNum AS INT), CAST(yearCegid AS INT), CAST(journal AS INT) ASC ]
HQL 查询: public ScrollableResultsretrieveSequenceNumberForCegidGenerate(){
StringBuilder queryBuilder = new StringBuilder(" SELECT SUBSTRING(referenceComptable , 8, 14) AS seqNum, SUBSTRING(referenceComptable, 4,7) AS yearCegid, SUBSTRING(referenceComptable, 1,3) AS journal")
.append(" FROM EtapeJudiciaireLnkFactureActesHonoraires ")
.append(" WHERE dateCegidGenerated BETWEEN :date AND :dateYearIntervalDate ")
.append(" ORDER BY CAST(seqNum AS INT), …Run Code Online (Sandbox Code Playgroud) 我正在将 spring JPA 与 PostgreSQL 数据库一起使用。我有一个实体如下:
@Entity
@TypeDef(name="json_binary", typeClass = com.vladmihalcea.hibernate.type.json.JsonBinaryType.class)
public class LiveTokens {
@Id
@GeneratedValue()
private Long id;
private String username;
@Type(type="json_binary")
@Column(columnDefinition = "jsonb")
private Token token
}
Run Code Online (Sandbox Code Playgroud)
和Token:
public class Token {
private Long expireTime;
private String accessToken;
}
Run Code Online (Sandbox Code Playgroud)
为了使用Hibernate将对象保存到列,我使用了Hibernate Types项目。现在我想获得LiveToken过期的All 。我不能用 Spring JPA 做到这一点。如何使用 Spring 数据 JPA 查询 posgresql jsonb 列?
我写了下面的 JPQL。
select e.name from emp e where e.date = nvl(:date,select max(date) from emp e where e.id=1);
Run Code Online (Sandbox Code Playgroud)
当我传递日期值时,它应该使用给定的日期值运行 JPQL。如果我不传递任何日期值,那么 JPQL 应该以max(date).
但得到了例外inconsistent datatypes。
观察结果:
如果我将查询更改为:
select e.name from emp e where e.date = :date
Run Code Online (Sandbox Code Playgroud)
它运行良好。但当我使用时,nvl我遇到了异常。