簡體   English   中英

休眠標准無法解析屬性

[英]Hibernate Criteria could not resolve property when it's there

這個讓我難過。 我對條件的工作原理有所了解,但由於某種原因,此查詢使我遇到了問題,當它明顯存在時無法找到該屬性。

Shelf.java

@Entity
@Table(name="BOOKSHELF")
public class Shelf {

@Id
private int shelfId;
private String shelfName;
private String shelfType;
@OneToMany(mappedBy="shelf",cascade=CascadeType.ALL)
private Set<Book> book = new HashSet<Book>(0);

//getters&setters here

Book.java

@Entity
@Table(name="BOOKS")
public class Book {

@Id
private int bookId;
private String bookName;
private String bookState;
@ManyToOne(cascade=CascadeType.ALL)
private Shelf shelf;    

//getters&setters here

這是我的條件查詢:

Criteria criteria = session.createCriteria(Book.class)
                    .add(Restrictions.eq("shelf.shelfId", bookLocId))
                    .add(Restrictions.ne("shelf.shelfType", "table"))
                    .add(Restrictions.ne("bookState", "requested");

問題是中間的限制。 它找不到shelfType但發現shelfId很好。 感謝您的任何幫助!

因為它是關聯的關鍵字,因此它找到了shelfId ,因為它是關聯的關鍵字,因此查詢不需要聯接即可查看ID。 如果要對其他屬性添加限制,則必須加入shelf關聯,例如:

Criteria criteria = session.createCriteria(Book.class)
         // JOINs shelf association and creates alias 'shelf' for it
         .createAlias("shelf", "shelf")
         .add(Restrictions.eq("shelf.shelfId", bookLocId))
         .add(Restrictions.ne("shelf.shelfType", "table"))
         .add(Restrictions.ne("bookState", "requested");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM