Hibernate + Derby: Comparações entre 'BOOLEAN' e 'INTEGER' não são suportadas
Eu tenho um problema com a consulta do banco de dados Derby. Eu estou usando o Hibernate com JPA. Problema está relacionado (provavelmente) a colunas booleanas. Cada consulta termina com erro:
org.hibernate.exception.SQLGrammarException: Comparações entre 'BOOLEAN' e 'INTEGER' não são suportadas. Tipos devem ser comparáveis. Os tipos de string também devem ter um agrupamento correspondente. Se o agrupamento não corresponder, uma solução possível é lançar operandos para forçá-los ao agrupamento padrão (por exemplo, SELECT nome da tabela FROM sys.systables WHERE CAST (nome da tabela AS VARCHAR (128)) = 'T1')
Abaixo você pode encontrar código de exemplo e configuração. As amostras são simplificadas para facilitar a leitura. Aqui está a minha entidade JPA:
<code>@Entity public abstract class Task implements Serializable { @Id @GeneratedValue(strategy = GenerationType.TABLE) protected long id; @Column protected boolean deleted; public long getId() { return id; } public boolean isDeleted() { return deleted; } public void setId(long id) { this.id = id; } public void setDeleted(boolean deleted) { this.deleted = deleted; } @Override public int hashCode() { return id; } @Override public boolean equals(Object object) { if (object == null) { return false; } if (!this.getClass().equals(object.getClass())) { return false; } EntityObject other = (EntityObject) object; if (this.id != other.id) { return false; } return true; } @Override public String toString() { return "EntityObject[ id=" + id + " ]"; } } </code>
Minha consulta JPA:
<code>SELECT t FROM Task t WHERE deleted = false </code>
Minha configuração do JPA:
<code><persistence-unit name="PU1" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>jdbc/myapp</jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/> </properties> </persistence-unit> </code>
O que está errado? Como consertar isso? Obrigado por qualquer sugestão.