Details
-
Bug
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
1.2.1
-
None
-
None
-
Windows XP 32-bit, Informix 11.5 database
Description
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
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