I持って、次のモデルクラス:私は、以下のSQLと等価である基準クエリを書きたい論理OR基準と基準の間
@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;
}
。
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:com.maximus.db.model.Book' –
はい、私はこの種の過去のことだったので、なぜそれが動作していないのかわかりません。ちなみに、このクエリにHQLを使用できない理由はありますか?そうするのがより簡単かもしれません。 –