Hi
I am having multiple problems using Hibernate with a small number of simple objects. I can't load my User object and I don't know why. Have I got my mapping wrong?
I get the following exception:
net.sf.hibernate.WrongClassException: Object with id: 21275acd23bf65dab1b1acdb47
23dc2b was not of the specified subclass: com.cms.shared.data.User (loaded object was of wrong class)
at net.sf.hibernate.loader.Loader.instanceAlreadyLoaded(Loader.java:456)
at net.sf.hibernate.loader.Loader.getRow(Loader.java:423)
at net.sf.hibernate.loader.Loader.doQuery(Loader.java:209)
at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections
(Loader.java:133)
at net.sf.hibernate.loader.Loader.doList(Loader.java:955)
at net.sf.hibernate.loader.Loader.list(Loader.java:946)
at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:834)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1536)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1513)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1505)
This is what's in Hibernate log:
23:02:46,569 INFO Environment:462 - Hibernate 2.1.3
23:02:46,589 INFO Environment:491 - hibernate.properties not found
23:02:46,589 INFO Environment:519 - using CGLIB reflection optimizer
23:02:46,609 INFO Configuration:872 - configuring from resource: /hibernate.cfg.xml
23:02:46,609 INFO Configuration:844 - Configuration resource: /hibernate.cfg.xml
23:02:46,989 INFO Configuration:328 - Mapping resource: User.hbm.xml
23:02:47,180 INFO Binder:229 - Mapping class: com.cms.shared.data.User -> cms_user
23:02:47,420 INFO Configuration:328 - Mapping resource: UserType.hbm.xml
23:02:47,440 INFO Binder:229 - Mapping class: com.cms.shared.data.UserType -> cms_usertype
23:02:47,440 INFO Configuration:328 - Mapping resource: Document.hbm.xml
23:02:47,470 INFO Binder:229 - Mapping class: com.cms.shared.data.Document -> cms_document
23:02:47,470 INFO Configuration:328 - Mapping resource: Company.hbm.xml
23:02:47,500 INFO Binder:229 - Mapping class: com.cms.shared.data.Company -> cms_company
23:02:47,500 INFO Configuration:328 - Mapping resource: UserLogin.hbm.xml
23:02:47,520 INFO Binder:229 - Mapping class: com.cms.shared.data.UserLogin -> cms_user
23:02:47,520 INFO Configuration:1030 - Configured SessionFactory: null
23:02:47,530 INFO Configuration:613 - processing one-to-many association mappings
23:02:47,530 INFO Configuration:622 - processing one-to-one association property references
23:02:47,530 INFO Configuration:647 - processing foreign key constraints
23:02:47,590 INFO Dialect:82 - Using dialect: net.sf.hibernate.dialect.MySQLDialect
23:02:47,590 INFO SettingsFactory:62 - Use outer join fetching: false
23:02:47,610 INFO NamingHelper:26 - JNDI InitialContext properties:{}
23:02:47,650 INFO DatasourceConnectionProvider:51 - Using datasource: java:comp/env/jdbc/cms
23:02:47,670 INFO TransactionManagerLookupFactory:33 - No TransactionManagerLookup configured (in JTA environment, use of process level read-write cache is not recommended)
23:02:47,991 INFO SettingsFactory:102 - Use scrollable result sets: true
23:02:47,991 INFO SettingsFactory:105 - Use JDBC3 getGeneratedKeys(): true
23:02:47,991 INFO SettingsFactory:108 - Optimize cache for minimal puts: false
23:02:48,001 INFO SettingsFactory:114 - echoing all SQL to stdout
23:02:48,001 INFO SettingsFactory:117 - Query language substitutions: {}
23:02:48,001 INFO SettingsFactory:128 - cache provider: net.sf.ehcache.hibernate.Provider
23:02:48,011 INFO Configuration:1093 - instantiating and configuring caches
23:02:48,281 INFO SessionFactoryImpl:119 - building session factory
23:02:48,662 INFO ReflectHelper:176 - reflection optimizer disabled for: com.cms.shared.data.UserLogin, IllegalArgumentException: Cannot find matching method/constructor
23:02:48,742 INFO ReflectHelper:176 - reflection optimizer disabled for: com.cms.shared.data.Company, IllegalArgumentException: Cannot find matching method/constructor
23:02:48,762 INFO ReflectHelper:176 - reflection optimizer disabled for: com.cms.shared.data.User, IllegalArgumentException: Cannot find matching method/constructor
23:02:48,772 INFO ReflectHelper:176 - reflection optimizer disabled for: com.cms.shared.data.Document, IllegalArgumentException: Cannot find matching method/constructor
23:02:48,792 INFO ReflectHelper:176 - reflection optimizer disabled for: com.cms.shared.data.UserType, IllegalArgumentException: Cannot find matching method/constructor
23:02:49,052 INFO SessionFactoryObjectFactory:82 - no JNDI name configured
23:02:49,242 DEBUG SQL:237 - select userlogin0_.user_id as user_id, userlogin0_.username as username, userlogin0_.password as password from cms_user userlogin0_ where (userlogin0_.username='FERRS' )and(userlogin0_.password='BLUEBERRY' )
23:02:49,293 DEBUG StringType:68 - returning '21275acd23bf65dab1b1acdb4723dc2b' as column: user_id
23:02:49,293 DEBUG StringType:68 - returning 'FERRS' as column: username
23:02:49,293 DEBUG StringType:68 - returning 'BLUEBERRY' as column: password
23:02:49,303 DEBUG SQL:237 - select user0_.user_id as user_id, user0_.firstname as firstname, user0_.surname as surname, user0_.email as email, user0_.company_id as company_id, user0_.usertype_id as usertype6_ from cms_user user0_ where (user0_.user_id='21275acd23bf65dab1b1acdb4723dc2b' )
23:02:49,313 DEBUG StringType:68 - returning '21275acd23bf65dab1b1acdb4723dc2b' as column: user_id
This is my User table
Code:
CREATE TABLE cms_user
(
user_id VARCHAR(32) NOT NULL PRIMARY KEY,
username VARCHAR(32) NOT NULL,
password VARCHAR(32) NOT NULL,
firstname VARCHAR(32) NOT NULL,
surname VARCHAR(32) NOT NULL,
email VARCHAR(64) NOT NULL,
usertype_id VARCHAR(32) NOT NULL REFERENCES cms_usertype(usertype_id),
company_id VARCHAR(32) NOT NULL REFERENCES cms_company(company_id)
)TYPE=InnoDB;
Mapping:
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="com.cms.shared.data.User" table="cms_user">
<!-- A 32 hex character is the surrogate key. It's automatically
generated by Hibernate with the UUID pattern. -->
<id name="id" type="string" unsaved-value="null" >
<column name="user_id" sql-type="char(32)" not-null="true"/>
<generator class="uuid.hex"/>
</id>
<property name="firstName" column="firstname" type="string" not-null="true" />
<property name="surname" column="surname" type="string" not-null="true" />
<property name="email" column="email" type="string" not-null="true" />
<many-to-one name="company" column="company_id" class="com.cms.shared.data.Company"
cascade="none" />
<many-to-one name="type" column="usertype_id" class="com.cms.shared.data.UserType"
cascade="none" />
</class>
</hibernate-mapping>
I have been trying to get this working for the past few days without any success. Any information or help from anyone would be greatly appreciated.
Thanks in advance.
[/code]