Java JPA База данных логических полей - PullRequest
0 голосов
/ 05 октября 2018

У меня есть свойство, созданное следующим образом в моей модели:

 public class Client {
    private Boolean supervisor;
 }

При выполнении запроса с использованием критериев, например: p4 = cb.isTrue (root.get ("supervisor")), JPAвозвращает ошибку client0_.supervisor = 1 - ОШИБКА: ошибка преобразования строки «1» [SQLState: 22018, код ошибки ISC: 335544334].Как я могу решить эту проблему?

Моя СУБД - это Firebird, а столбец supervisor - типа BOOLEAN.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Мне удалось решить проблему не с критериями, а с JPQL следующим образом:

select     new Extensionista(e.id, e.name) 
from       Extensionista e 
join       e.localControle lc 
where      lc.id =: id 
and        e.cpf is not null 
and        e.status = 'T' 
and        e.supervisor = 'true'
order by   e.name
0 голосов
/ 05 октября 2018

Трудно сказать с помощью предоставленной информации, но , вероятно, происходит из-за того, что ваша реализация JPA находится в режиме гибернации, а в режиме гибернации , вероятно, нет диалекта для Firebase,так что вместо этого вы используете какой-то другой диалект (например, диалект Н2), и этот диалект , вероятно, неправильно обрабатывает логический тип данных.

Сначала необходимо убедиться, что это действительнослучае, и если это так, вам нужно будет либо найти, либо внедрить диалект Hibernate для Firebase, который исправляет это.Это, безусловно, больше работы, чем просто настройка параметра, но это не требует огромных усилий, посмотрите здесь пример:

HSQL + Hibernate Исключение: Неверный тип столбца: Найдено: двойной, ожидается:плавать

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