0 OR size(userResults) > 0") 在 @One-6ren">
gpt4 book ai didi

java - Hibernate Where 子句中的 SQLSyntaxErrorException

转载 作者:行者123 更新时间:2023-12-02 09:54:09 25 4
gpt4 key购买 nike

我正在尝试使用Where 子句来过滤掉空实体。

 @Where(clause = "size(userTracking) > 0 OR size(userResults) > 0")

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "user_id", insertable = false, updatable = false)
@LazyCollection(LazyCollectionOption.FALSE)
@Where(clause = "size(userTracking) > 0 OR size(userResults) > 0")
private List<UserSession> userSessions = new ArrayList<UserSession>();

在 UserSession 中

@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "user_session_id", updatable = false)
@LazyCollection(LazyCollectionOption.FALSE)
private List<UserResult> userResults = new ArrayList<UserResult>();

@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "user_session_id", updatable = false)
@LazyCollection(LazyCollectionOption.FALSE)
private List<UserTracking> userTracking = new ArrayList<UserTracking>();

但是我收到的错误是

Caused by: java.sql.SQLSyntaxErrorException: FUNCTION database.size does not exist

可以这样使用@Where子句吗?

它不是重复的

HQL Query to check if size of collection is 0 or empty

我明确表示 .size() 在这里不起作用。

.size 也不起作用

Java.sql.SQLSyntaxErrorException: Unknown column 'userTracking.size' in 'where clause'

我也尝试过“不为空”

 java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'usersessio0_.EMPTY OR usersessio0_.userResults IS usersessio0_.EMPTY) and users' at line 1

最佳答案

@Where 定义了 SQL WHERE 子句,而不是 HQL WHERE 子句,因此您需要编写:

@Where(clause = "user_session_id IN ( SELECT xxx FROM UserTracking ) OR user_session_id IN ( SELECT xxx FROM UserResult )")

其中 xxx 是这些列的名称。

关于java - Hibernate Where 子句中的 SQLSyntaxErrorException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56120076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com