I found datanucleus mapping long to BIGINT(20) btw. On Mon, Jul 2, 2012 at 12:21 AM, Muhammad Gelbana <m.gelb...@gmail.com>wrote:
> 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* > > -- *Regards,* *Muhammad Gelbana Java Developer*