我一直遇到Where注釋的問題我在MySQL 8.0.18上有兩個表,場地和音樂會,具有這種結構和字段CREATE TABLE VENUE( ID INT NOT NULL AUTO_INCREMENT, NAME VARCHAR(220) NOT NULL, IMAGE VARCHAR(240), ACTIVE BIT NOT NULL DEFAULT 0, COORDINATES VARCHAR(120), COUNTRY VARCHAR(120) NOT NULL DEFAULT 'USA', CITY VARCHAR(220) NOT NULL DEFAULT 'None', RATING INT NOT NULL DEFAULT 0, VERSION INT NOT NULL DEFAULT 0, PRIMARY KEY (ID));CREATE TABLE CONCERT( ID INT NOT NULL AUTO_INCREMENT, NAME VARCHAR(120) NOT NULL, DESCRIPTION VARCHAR(120) NOT NULL, FESTIVAL_ID INT, VENUE_ID INT, RATING INT NOT NULL DEFAULT 0, DATE DATETIME, IMAGE BLOB, VERSION INT NOT NULL DEFAULT 0, FOREIGN KEY (FESTIVAL_ID) REFERENCES FESTIVAL (ID), FOREIGN KEY (VENUE_ID) REFERENCES VENUE (ID), PRIMARY KEY (ID));
2 回答

紫衣仙女
TA貢獻1839條經驗 獲得超15個贊
BorhSet
是空的,可能是因為current_date
is null
。在這種情況下,兩個謂詞都解析為false
。發生這種情況是因為 hibernate 無法解析名為 的列current_date
并將其設置為 null。
您可以通過使用 subselect 來解決這個問題,因為clause
它只是一個在創建查詢時粘貼到內部的 sql 謂詞where
(這取決于您使用的數據庫):
@Where(clause = "date < (select * from current_date())")
或者在某些數據庫中更短:
@Where(clause = "date < (select current_date())")
PS:在我看來,這不是一個好的設計。測試更加困難,并且使得與這些集合有關的每個查詢都不可預測(相同的查詢可能會根據運行時間產生不同的結果)。

湖上湖
TA貢獻2003條經驗 獲得超2個贊
我有相同的關聯(實際上是相同的 FK 列)映射多次 - 但因為 Hibernate 知道這是相同的 FK,所以它認為它們是相同的。
在調試Hibernate生成的SQL時發現的。
本質上,這在實體上是不可能的
添加回答
舉報
0/150
提交
取消