[英]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.