db-jdo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Muhammad Gelbana <m.gelb...@gmail.com>
Subject Re: How to annotate a column to represent "int unsigned" datatype ?
Date Sun, 01 Jul 2012 19:10:48 GMT
First of all, thank you both for your time :)

Michael, I'm very sorry it didn't work. I can't figure out the difference
between sqlType and jdbcType !

I tried your suggestions with different flavors such as (INTEGER(11)
UNSIGNED and switched cases) but none worked.

@Column(sqlType = "INT(11) UNSIGNED", defaultValue = "1")
private Member member;


But all attempts brought up that exception (Or what reflects the sqlType
value), I alos tried these combinations with jdbcType but didn't too:
*(TclRequest2 is the class with the mapping I'm trying to test and the main
method initializing the test)*

javax.jdo.JDOFatalInternalException: SQL type INT(11) UNSIGNED declared for
field of java type java.lang.Integer cant be mapped for this datastore.
at
org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:562)
at
org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:745)
at
org.datanucleus.api.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:765)
at
com.skycomm.services.dao.impl.GenericDAOImpl.saveAndDetach(GenericDAOImpl.java:267)
at com.skycomm.ixload.TclRequest2.main(TclRequest2.java:58)
NestedThrowablesStackTrace:
SQL type INT(11) UNSIGNED declared for field of java type java.lang.Integer
cant be mapped for this datastore.
org.datanucleus.exceptions.NucleusException: SQL type INT(11) UNSIGNED
declared for field of java type java.lang.Integer cant be mapped for this
datastore.
at
org.datanucleus.store.rdbms.mapping.RDBMSMappingManager.getDatastoreMappingClass(RDBMSMappingManager.java:305)
at
org.datanucleus.store.rdbms.mapping.RDBMSMappingManager.createDatastoreMapping(RDBMSMappingManager.java:564)
at
org.datanucleus.store.mapped.mapping.PersistableMapping.prepareDatastoreMapping(PersistableMapping.java:246)
at
org.datanucleus.store.mapped.mapping.PersistableMapping.initialize(PersistableMapping.java:113)
at
org.datanucleus.store.mapped.mapping.MappingFactory.createMapping(MappingFactory.java:97)
at
org.datanucleus.store.mapped.mapping.AbstractMappingManager.getMapping(AbstractMappingManager.java:255)
at
org.datanucleus.store.rdbms.table.ClassTable.manageMembers(ClassTable.java:540)
at
org.datanucleus.store.rdbms.table.ClassTable.manageClass(ClassTable.java:420)
at
org.datanucleus.store.rdbms.table.ClassTable.initializeForClass(ClassTable.java:1080)
at
org.datanucleus.store.rdbms.table.ClassTable.initialize(ClassTable.java:267)
at
org.datanucleus.store.rdbms.RDBMSStoreManager$ClassAdder.initializeClassTables(RDBMSStoreManager.java:2452)
at
org.datanucleus.store.rdbms.RDBMSStoreManager$ClassAdder.addClassTablesAndValidate(RDBMSStoreManager.java:2359)
at
org.datanucleus.store.rdbms.RDBMSStoreManager$ClassAdder.run(RDBMSStoreManager.java:2009)
at
org.datanucleus.store.rdbms.AbstractSchemaTransaction.execute(AbstractSchemaTransaction.java:113)
at
org.datanucleus.store.rdbms.RDBMSStoreManager.addClasses(RDBMSStoreManager.java:820)
at
org.datanucleus.store.AbstractStoreManager.addClass(AbstractStoreManager.java:1163)
at
org.datanucleus.store.mapped.MappedStoreManager.getDatastoreClass(MappedStoreManager.java:383)
at
org.datanucleus.store.rdbms.fieldmanager.DynamicSchemaFieldManager.storeObjectField(DynamicSchemaFieldManager.java:98)
at
org.datanucleus.state.AbstractStateManager.providedObjectField(AbstractStateManager.java:1452)
at com.skycomm.ixload.TclRequest2.jdoProvideField(TclRequest2.java)
at com.skycomm.ixload.TclRequest2.jdoProvideFields(TclRequest2.java)
at
org.datanucleus.state.AbstractStateManager.provideFields(AbstractStateManager.java:1520)
at
org.datanucleus.store.rdbms.RDBMSPersistenceHandler.checkForSchemaUpdatesForFieldsOfObject(RDBMSPersistenceHandler.java:634)
at
org.datanucleus.store.rdbms.RDBMSPersistenceHandler.insertObject(RDBMSPersistenceHandler.java:119)
at
org.datanucleus.state.JDOStateManager.internalMakePersistent(JDOStateManager.java:2371)
at
org.datanucleus.state.JDOStateManager.makePersistent(JDOStateManager.java:2347)
at
org.datanucleus.ObjectManagerImpl.persistObjectInternal(ObjectManagerImpl.java:1798)
at
org.datanucleus.ObjectManagerImpl.persistObjectWork(ObjectManagerImpl.java:1647)
at
org.datanucleus.ObjectManagerImpl.persistObject(ObjectManagerImpl.java:1504)
at
org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:740)
at
org.datanucleus.api.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:765)
at
com.skycomm.services.dao.impl.GenericDAOImpl.saveAndDetach(GenericDAOImpl.java:267)
at com.skycomm.ixload.TclRequest2.main(TclRequest2.java:58)
Exception in thread "main" java.lang.NullPointerException
at com.skycomm.ixload.TclRequest2.main(TclRequest2.java:58)


Thanks a lot :)

On Sun, Jul 1, 2012 at 2:04 PM, Michael Bouschen <
michael.bouschen@akquinet.de> wrote:

> Hi,
>
> I'm not sure whether I understand he issue correctly. What I understood is
> that you want Datanucleus to create the table for your class Test. But the
> generated table does not have the correct column type for the foreign key,
> since it is not unsigned.
>
> The @Column annotation has an attribute called sqlType that allows you to
> declare the type of the column in the database (in your case "INT(11)
> UNSIGNED"). I'm note sure whether you can have both jdbcType and sqlType. I
> would skip the jdbcType and length when specifying sqlType.
>
> Hope this helps.
>
> Regards Michael
>
>
>  Hi everyone,
>>
>> Here is a sample of my mapping:[code]@**PersistenceCapable(**identityType
>> =
>> IdentityType.APPLICATION, detachable = "true")
>> public class Test {
>>      @PrimaryKey
>>      @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
>>      private long id;
>>      @Persistent(column = "user")
>>      @Column(defaultValue = "1", jdbcType = "INTEGER", length =
>> 11,allowsNull = "false")
>>      private Member member;
>>
>>      //Getters and setters
>> }[/code]I'm using MySQL.
>> I have my object (Test) with a field that maps another object (Member)
>> that
>> I'm not allowed to alter it's table. Member's id column type "INT(11)
>> UNSIGNED"
>>
>> Datanucleus (A JDO implementation) is unable to create the "Test" table
>> because it's "user" column will have to have a foreign-key constraint to
>> point at "Member"'s PK column which is "INT(11)  UNSIGNED". I managed to
>> specify it's type and length but I can't specify that it's
>> [b]UNSIGNED[/b] !
>>
>> I suppose this can be done using extensions but I can't find a clear and
>> detailed specification for the available extensions.
>>
>> I reached that page, looked through some of the api docs but found
>> nothing.
>>
>> I generally find the extensions annotation very critical sometimes but I
>> can't find where is it's specification ?!
>>
>> I feel terribly lost right now !
>>
>>
>
> --
> *Michael Bouschen*
> *Prokurist*
>
> akquinet tech@spree GmbH
> Bülowstr. 66, D-10783 Berlin
>
> Fon:   +49 30 235 520-33
> Fax:   +49 30 217 520-12
> Email: michael.bouschen@akquinet.de
> Web: www.akquinet.de <http://www.akquinet.de>
>
> akquinet tech@spree GmbH, Berlin
> Geschäftsführung: Martin Weber, Dr. Torsten Fink
> Amtsgericht Berlin-Charlottenburg HRB 86780 B
> USt.-Id. Nr.: DE 225 964 680
>



-- 
*Regards,*
*Muhammad Gelbana
Java Developer*

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message