我有一個使用Hibernate創建NamedQuery的問題。問題是我需要選擇未出現在訂單中的圖書清單。我的課看起來是這樣的:Hibernate命名查詢(選擇所有實體不出現在其他實體中)
@Entity
@NamedQueries({ @NamedQuery(name = "Book.findAvailable",
query = "SELECT b FROM Book b WHERE b.id not in ????????") })
public class Book {
@Id
@GeneratedValue
private Long id;
......
與秩序:
@Entity(name = "orders")
public class Order {
@Id
@GeneratedValue
private Long id;
@ElementCollection
private List<Book> items;
.....
正如你看到的,我把我的書,以便在列表中。我需要的查詢應該從數據庫中抽出所有不以任何順序顯示的圖書。 任何幫助表示讚賞。非常感謝。
好吧,我建議一個簡單的事,加布爾列來預訂,如果至少有一個訂單列表中有它,那麼使該標誌爲真,所以以後你會發現所有有該標誌的書都是假的,但我不太確定,因爲當你從訂單中刪除一本書時在將該標誌設置爲false之前檢查第一個是否存在於其他順序列表中, – AntJavaDev 2014-09-26 15:01:32
嗯,這是個好主意。我現在執行的方式正是這樣),儘管我的負責人表示,保留另一個布爾變量來檢查圖書的可用性不是最好的決定。更好的方法是把索引放在書的ID上,並通過namedquery執行該操作:) – DruidKuma 2014-09-26 16:30:12