如何使用自定义数据类型更新或删除Java对象的Derby表字段

如何使用自定义数据类型更新或删除Java对象的Derby表字段,java,mysql,jdbc,derby,Java,Mysql,Jdbc,Derby,我有一个带有Java对象表的Derby数据库。我甚至创建了对象所属的类的自定义数据类型 自定义数据类型的名称为MYCURRENCY 现在,虽然我可以将数据插入到表中,但在使用Where子句更新和删除时出现错误 Error - java.sql.SQLSyntaxErrorException: Comparisons between '"APP"."MYCURRENCY"' and '"APP"."MYCURRENCY"

我有一个带有Java对象表的Derby数据库。我甚至创建了对象所属的类的自定义数据类型

自定义数据类型的名称为MYCURRENCY

现在,虽然我可以将数据插入到表中,但在使用Where子句更新和删除时出现错误

Error - java.sql.SQLSyntaxErrorException: Comparisons between '"APP"."MYCURRENCY"' and '"APP"."MYCURRENCY"' are not supported. Types must be comparable. String types must also have matching collation. If collation does not match, a possible solution is to cast operands to force them to the default collation (e.g. SELECT tablename FROM sys.systables WHERE CAST(tablename AS VARCHAR(128)) = 'T1')
我的更新查询:

query = "UPDATE CURRENCYTABLE SET currency = ? WHERE CAST(currency as MyCurrency) = ?";
                    pstmt = con.prepareStatement(query);
                    pstmt.setObject(1, newCurr);
                    pstmt.setObject(2, oldCurr);
删除:

query = "DELETE FROM CURRENCYTABLE WHERE CAST(currency as MYCURRENCY) = ?";
                    pstmt = con.prepareStatement(query);
                    pstmt.setObject(1, curr);
从中创建对象的类已重写equalsto和compareTo方法


请帮助理解如何在没有Hibernate的情况下比较数据库中的Java对象(这是一个Swing项目)

我重新创建了您的错误。我认为不可能在SQL中执行像这样的直接对象到对象比较。如果您查看,它们会显示没有直接比较或需要Derby用户定义函数的用法:“使用函数,您可以在SELECT语句中访问UDT中的字段”。因此,我认为您需要构建与Java
equals()
和/或
compareTo()方法等效的Derby函数。