Допустим, у меня есть сущность "Книга" с колонкой "title".
SQL:
create table BOOK (
ID integer generated by default as identity (start with 1),
ISBN varchar (20) not null,
TITLE varchar (128),
PRICE double not null,
primary key (ID),
unique (ISBN)
);
Сущность:
@Entity
public class Book implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Basic
private String isbn;
@Basic
private String title;
@Basic
private double price;
[... constructors, getters, setters, ...]
}
В этом очень построенном и упрощенном примере не каждая книга имеет заголовок, поэтому некоторые строки содержат нулевые значения.
Я хочу получить все книги с / без заголовка в одном запросе в зависимости от одного параметра.
TypedQuery<Book> query1 = manager.createQuery(
"select b from Book b where (b.title is not null) = :title", Book.class);
query1.setParameter("title", true);
Pure SQL действует как ожидалось, но JPQL / Hibernate выбрасывает
org.hibernate.hql.internal.ast.QuerySyntaxException: неожиданный узел AST: не нуль
Есть ли простое решение этой проблемы?