Ruhezustand + Derby: Vergleiche zwischen 'BOOLEAN' und 'INTEGER' werden nicht unterstützt
Ich habe ein Problem mit der Abfrage der Derby-Datenbank. Ich benutze Hibernate mit JPA. Das Problem hängt (wahrscheinlich) mit Booleschen Spalten zusammen. Jede Abfrage endet mit einem Fehler:
org.hibernate.exception.SQLGrammarException: Vergleiche zwischen 'BOOLEAN' und 'INTEGER' werden nicht unterstützt. Typen müssen vergleichbar sein. Zeichenfolgentypen müssen auch eine übereinstimmende Sortierung haben. Wenn die Sortierung nicht übereinstimmt, besteht eine mögliche Lösung darin, Operanden zu konvertieren, um sie zur Standard-Sortierung zu zwingen (z. B. SELECT tablename FROM sys.systables WHERE CAST (Tabellenname AS VARCHAR (128)) = 'T1').
Unten finden Sie möglicherweise Beispielcode und Konfiguration. Die Beispiele sind zum leichteren Ablesen vereinfacht. Hier ist meine JPA-Entität:
<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>
Meine JPA-Abfrage:
<code>SELECT t FROM Task t WHERE deleted = false </code>
Meine JPA-Konfiguration:
<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>
Was ist falsch? Wie kann man das beheben? Vielen Dank für alle Vorschläge.