[ 
https://issues.apache.org/jira/browse/OPENJPA-1420?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12790750#action_12790750
 ] 

Kevin Sutter commented on OPENJPA-1420:
---------------------------------------

>From Mike on the dev mailing list in response to the original question...

Hi Marc,

I'd say it's a bug. If you have a JIRA account would you mind opening one at
http://issues.apache.org/jira/browse/OPENJPA ?  If not I'll open one on your
behalf.

We already define a longVarChar type for several databases, unfortunately it
doesn't appear to be used anywhere. For Informix the type would be TEXT. I'm
not familiar with LVARCHAR or how it's different from TEXT. Would TEXT also
suffice for you? Either way we have a bug to fix.

In the meantime a quick workaround would be to specify the column type in
the entity. For example  :
@Entity
public class MyEntity {

     @Id
     private int id;

     @Basic
     @Column(length=4000, columnDefinition="LVARCHAR(4000)")
     private String description;

    // . . .

Regards,
-mike

> Long strings are improperly mapped on Informix
> ----------------------------------------------
>
>                 Key: OPENJPA-1420
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1420
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jdbc
>    Affects Versions: 1.2.1
>         Environment: Windows XP 32-bit, Informix 11.5 database
>            Reporter: Marc Boudreau
>            Priority: Minor
>
> The field:
> @Basic
> @Column(length=4000)
> private String description;
> gets mapped to VARCHAR(4000) which is illegal on Informix.  The limit for 
> VARCHAR on Informix is 255.  The field should be mapped to LVARCHAR, which 
> supports up to 32767 characters on Informix. TEXT  should only be used if the 
> @Lob annotation is included, because this type can't be indexed.
> This is my test entity:
> MyEntity.java: 
> @Entity 
> public class MyEntity { 
>       @Id 
>       private int id; 
>       @Basic 
>       @Column(length=4000) 
>       private String description; 
>       public int getId() { 
>             return id; 
>       } 
>       public void setId(int value) { 
>             id = value; 
>       } 
>       public String getDescription() { 
>             return description; 
>       } 
>       public void setDescription(String value) { 
>             description = value; 
>       } 
> }
> This is what is dumped to the console:
> 2737  isvi  INFO   [main] openjpa.Runtime - Starting OpenJPA 1.2.1, 
> 2951  isvi  INFO   [main] openjpa.jdbc.JDBC - Using dictionary class 
> "org.apache.openjpa.jdbc.sql.InformixDictionary". 
> Exception in thread "main" <openjpa-1.2.1-r752877:753278 nonfatal general 
> error> org.apache.openjpa.persistence.PersistenceException: IDS SQL Error: 
> SQLCODE=-650, SQLSTATE=IX000, SQLERRMC=null, DRIVER=3.51.90 {stmnt 
> 809054265 CREATE TABLE MyEntity (id INTEGER NOT NULL, description VARCHAR 
> (4000), PRIMARY KEY (id)) LOCK MODE ROW} [code=-650, state=IX000] 
>       at org.apache.openjpa.jdbc.meta.MappingTool.record 
> (MappingTool.java:553) 
>       at org.apache.openjpa.jdbc.meta.MappingTool.record 
> (MappingTool.java:453) 
>       at 
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings 
> (JDBCBrokerFactory.java:159) 
>       at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl 
> (JDBCBrokerFactory.java:119) 
>       at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker 
> (AbstractBrokerFactory.java:189)) 
>       at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker 
> (DelegatingBrokerFactory.java:142) 
>       at 
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager 
> (EntityManagerFactoryImpl.java:192) 
>       at 
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager 
> (EntityManagerFactoryImpl.java:145) 
>       at 
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager 
> (EntityManagerFactoryImpl.java:56)) 
>       at jpa.test.isvi.Main.run(Main.java:12) 
>       at jpa.test.isvi.Main.main(Main.java:53) 
> Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: IDS SQL 
> Error: SQLCODE=-650, SQLSTATE=IX000, SQLERRMC=null, DRIVER=3.51.90 {stmnt 
> 809054265 CREATE TABLE MyEntity (id INTEGER NOT NULL, description VARCHAR 
> (4000), PRIMARY KEY (id)) LOCK MODE ROW} [code=-650, state=IX000] 
>       at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap 
> (LoggingConnectionDecorator.java:192) 
>       at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$700 
> (LoggingConnectionDecorator.java:57), 
>       at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator 
> $LoggingConnection$LoggingStatement.executeUpdate 
> (LoggingConnectionDecorator.java:762) 
>       at org.apache.openjpa.lib.jdbc.DelegatingStatement.executeUpdate 
> (DelegatingStatement.java:114) 
>       at org.apache.openjpa.jdbc.schema.SchemaTool.executeSQL 
> (SchemaTool.java:1191) 
>       at org.apache.openjpa.jdbc.schema.SchemaTool.createTable 
> (SchemaTool.java:949) 
>       at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:526) 
>       at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:344) 
>       at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:321) 
>       at org.apache.openjpa.jdbc.meta.MappingTool.record 
> (MappingTool.java:501): 
>       ... 10 more 

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

Reply via email to