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;
}
;
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
어떻게 위를 달성 않습니다
Select
t.title, b.edition
from
books b, title t
where
b.titleID = t.titleID
and
(b.edition=4 OR t.title LIKE '%Java%);
나는 다음과 같은 시도?
감사합니다.
당신이했던 것처럼 관련 엔티티에 대한 제한을 추가 할 수 있습니까? 비둘기. 위의 시도했는데 다음 예외가 발생합니다 :'org.hibernate.QueryException : 속성을 확인할 수 없습니다 : title.title : com.maximus.db.model.Book' –
예, 이런 종류의 작업을 수행했습니다. 과거의 일 이었기 때문에 왜 작동하지 않는지 알 수 없었습니다. 덧붙여 말하자면,이 쿼리에 HQL을 사용할 수없는 이유가 무엇입니까? 그렇게하는 것이 더 쉽습니다. –