使用带有Oracle的休眠状态提取带有存储为base64 LOB的头像图像的记分板数据。我已经做过一些研究,似乎所有其他类似的帖子都是人们试图通过区分或将其放在where子句中与CLOB数据进行比较。我还阅读了oracle在临时表(视图)中不支持CLOB的情况,如果是这种情况,如何从数据库中获取数据。这样代码可以在内存DB的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;
答案 0 :(得分:0)
检查此链接。
https://forum.hibernate.org/viewtopic.php?f=1&t=998284
因此,DISTINCT
不能与CLOB
数据类型(即image
)一起使用。请检查是否可以解决您的问题。
答案 1 :(得分:0)
我没有解决确切的问题,但是我使用的一种解决方法(虽然不理想,但可行)是我得到了所有内容,除了在1个查询中的图像数据,然后对图像数据进行了另一个查询并将图像连接到之后视图结束。我只是在查询前100个结果,因此这并不是对资源的明智选择。