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.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage