SQL type INT(11) UNSIGNED declared for field of java type java.lang.Long cant be mapped for this datastore. :)
This is killing me ! ehehehhe On Sun, Jul 1, 2012 at 11:22 PM, Michael Bouschen < michael.bousc...@akquinet.de> wrote: > Hi, > > I'm wondering why the error message says "the SQL type INT(11) UNSIGNED > declared for field of java type java.lang.Integer". So maybe the error is > not on the annotations for class Test, but for the referred class Member. > What is the primary key for class member? You cannot use an Integer or int, > because INT(11) may hold values that cause an overflow. So the primary key > field in Member should be a long field. > > Regards Michael > > 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.** >> getJDOExceptionForNucleusExcep**tion(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.** >> checkForSchemaUpdatesForFields**OfObject(**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.bousc...@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.bousc...@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 >>> >>> >> >> > > -- > *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.bousc...@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*