如何使用自定义数据类型更新或删除Java对象的Derby表字段
我有一个带有Java对象表的Derby数据库。我甚至创建了对象所属的类的自定义数据类型 自定义数据类型的名称为MYCURRENCY 现在,虽然我可以将数据插入到表中,但在使用Where子句更新和删除时出现错误如何使用自定义数据类型更新或删除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"
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函数。