Hibernate / JPQL: вложенные логические выражения генерируют org.hibernate.hql.internal.ast.QuerySyntaxException - PullRequest
0 голосов
/ 16 января 2020

Допустим, у меня есть сущность "Книга" с колонкой "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: не нуль

Есть ли простое решение этой проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...