我有以下的模型類:邏輯或準則和標準之間的
@Entity
@Table(name = "title")
public final class Title extends ModelData<Title>
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer titleID;
@Column(name = "title")
private String title;
@Column(name = "description")
private String description;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "title")
private Set<Book> books;
}
@Entity
@Table(name = "book")
public final class Book extends ModelData<Book>
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "bookID")
private int bookID;
@ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
@JoinColumn(name = "titleID")
private Title title;
@Column(name = "edition")
private Integer edition;
@Column(name = "isbn")
private String ISBN;
}
我想寫一個條件查詢等同於以下SQL;
Select
t.title, b.edition
from
books b, title t
where
b.titleID = t.titleID
and
(b.edition=4 OR t.title LIKE '%Java%);
我試過如下:
Criteria c = session.createCriteria(Book.class);
Criteria titleCriteria = c.createCriteria("title");
titleCriteria.add(Restrictions.like("title", "%Java%");
Criterion edition = Restrictions.eq("edition", 4);
LogicalExpression orExp = Restrictions.or(edition, titleCriteria); //cannot do this
如何實現以上?
謝謝。
您確定我們可以像添加一樣添加關聯實體的限制嗎?波夫。我嘗試了上述,我收到以下異常:'org.hibernate.QueryException:無法解析屬性:title.title of:com.maximus.db.model.Book' – 2012-01-29 20:13:09
是的,我已經完成了這種過去的事情,所以我不明白爲什麼它不工作。順便說一下,是否有一個原因,你爲什麼不能使用HQL進行查詢?這樣做可能更直接。 – 2012-01-29 21:20:36