openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Patrick Linskey (JIRA)" <j...@apache.org>
Subject [jira] Updated: (OPENJPA-289) Setting a parameter in a bulk update with a value of type Enum throws an exception
Date Fri, 20 Jul 2007 20:04:06 GMT

     [ https://issues.apache.org/jira/browse/OPENJPA-289?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Patrick Linskey updated OPENJPA-289:
------------------------------------

    Issue Type: Sub-task  (was: Bug)
        Parent: OPENJPA-290

> Setting a parameter in a bulk update with a value of type Enum throws an exception
> ----------------------------------------------------------------------------------
>
>                 Key: OPENJPA-289
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-289
>             Project: OpenJPA
>          Issue Type: Sub-task
>    Affects Versions: 0.9.7
>         Environment: Windows XP SP2, Java 1.5.0_11, Hypersonic database (hsqldb) 1.8.4
>            Reporter: Christian Defoy
>
> Assume that Class Shape contains an attribute of type LineType (an Enum).  When trying
to do a bulk update of the enum value using the following query
> UPDATE Shape s SET s.type = :type
> and setting the "type" parameter using the following:
> query.setParameter( "type", Type.PLAIN );
> the following exception is thrown: 
> Exception in thread "main" <0.9.7-incubating nonfatal user error> org.apache.openjpa.persistence.ArgumentException:
The specified parameter of type "class test.LineType" is not a valid query parameter.
>        at org.apache.openjpa.jdbc.sql.DBDictionary.setUnknown(DBDictionary.java:1275)
>        at org.apache.openjpa.jdbc.sql.SQLBuffer.setParameters(SQLBuffer.java:567)
>        at org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:478)
>        at org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:454)
>        at org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:443)
>        at org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.executeBulkOperation(JDBCStoreQuery.java:500)
>        at org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.executeUpdate(JDBCStoreQuery.java:430)
>        at org.apache.openjpa.kernel.ExpressionStoreQuery$DataStoreExecutor.executeUpdate(ExpressionStoreQuery.java:690)
>        at org.apache.openjpa.kernel.QueryImpl.update(QueryImpl.java:1036)
>        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:843)
>        at org.apache.openjpa.kernel.QueryImpl.updateAll(QueryImpl.java:879)
>        at org.apache.openjpa.kernel.DelegatingQuery.updateAll(DelegatingQuery.java:581)
>        at org.apache.openjpa.persistence.QueryImpl.executeUpdate(QueryImpl.java:313)
>        at com.softek.jpa.ShapeHelper.testShapeUpdate(ShapeHelper.java:180)
>        at com.softek.jpa.ShapeHelper.run(ShapeHelper.java:78)
>        at com.softek.jpa.ShapeHelper.main(ShapeHelper.java:196)
> There is a workaround: assuming that the database column is an integer, you can use the
ordinal value of the enum.  This also assumes that the values of your enums are in sync with
their ordinal values.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message