ORA-00932: 不一致的数据类型: 预期 - 得到 clob 休眠/弹簧启动
Posted
技术标签:
【中文标题】ORA-00932: 不一致的数据类型: 预期 - 得到 clob 休眠/弹簧启动【英文标题】:ORA-00932: inconsistent datatypes: expected - got clob hibernate/springboot 【发布时间】:2019-05-10 12:13:10 【问题描述】:使用 hibernate w/oracle 提取记分牌数据,其中包含存储为 base64 LOB 的头像图像。我做了一些研究,似乎所有其他类似的帖子都是人们试图通过区分或将其放在 where 子句中与 CLOB 数据进行比较。我还阅读了 oracle 不支持临时表(视图)中的 CLOB,如果是这种情况,我该如何从数据库中获取数据。仅供参考,代码在内存数据库中的 H2 中工作。
查询抛出错误:
select distinct score.userId as userId, sum(score.totalScore) as totalScore,
sum(score.timeTaken) as timeTaken, user.image as image
from Score score, User user
where score.userId = user.userId
group by score.userId order by totalScore desc, timeTaken asc
实体:
用户:
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "id_Sequence2")
@SequenceGenerator(name = "id_Sequence2", sequenceName = "ID_SEQ2")
@Column(name = "id", updatable = false, nullable = false)
int id;
int userId;
@Lob
String image;
Date createdDate;
Date lastLoggedIn;
得分:
@Id
@Column(name = "quizID", updatable = false, nullable = false)
int quizId;
@Id
@Column(name = "userID", updatable = false, nullable = false)
int userId;
double totalScore;
@OneToMany(targetEntity=UserQuizRecord.class, fetch=FetchType.EAGER, cascade = CascadeType.ALL )
List<UserQuizRecord> userQuizRecords;
int timeTaken;
int correctAns;
Date takenDate;
【问题讨论】:
如果 base 64 字符串的长度小于 4000 字节,您应该能够使用to_char
将它们转换为标准字符串。否则,如果您无法让 Hibernate 重组查询(我根本不知道 Hibernate),那么也许您可以在Score
上创建一个视图,每个userID
给出一行。 Oracle 在临时表和视图中都支持 CLOB。
【参考方案1】:
检查此链接。
https://forum.hibernate.org/viewtopic.php?f=1&t=998284
据此,DISTINCT
不能与CLOB
数据类型即image
一起使用。请检查这是否解决了您的问题。
【讨论】:
我没有使用 distinct with image 吗?我在 Score 表中的第一个 select 语句中使用它。然后将视图与用户表正确连接? 如果是这种情况,我该如何加入 userID 上的表【参考方案2】:我没有解决确切的问题,但我使用的解决方法(虽然不理想但有效)是我在 1 个查询中得到了除图像数据之外的所有内容,然后对图像数据进行了另一个查询并将图像连接到之后视图结束。我只查询前 100 个结果,所以这不是对资源的征税。
【讨论】:
以上是关于ORA-00932: 不一致的数据类型: 预期 - 得到 clob 休眠/弹簧启动的主要内容,如果未能解决你的问题,请参考以下文章
ORA-00932: 不一致的数据类型: 预期 - 得到 CLOB
如何修复 PL/SQL:ORA-00932:不一致的数据类型:预期的 CLOB 得到了 -
ora-00932 不一致的数据类型预期数字得到 char plsql
ORA-00932: 不一致的数据类型: 预期 - 得到 clob 休眠/弹簧启动