I am a Hibernate newbie, so hopefully this will be some simple mistake that newbies do. I searched and could not find anything resembling my problem. I am getting a PropertyAccessException when I try to save a TrackerObject. The problem seems to be with my first many-to-one property, groupCode. If I comment out the groupCode reference in the map file (along with the other many-to-one lines), the problem goes away. So I suspect I'm not doing the mapping right.
I am using HibernateUtil.java from the tutorial. My program is very simple at this point. First, I call CodeGroupObject.loadDefaults (code shown below), which loads the group table with predefined values. Then I'm trying to load some sample data for the tracker table. This code to do this is:
Code:
private static void loadTestTrackers()
{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
for (int row = 0; row < testTrackerData.length; row++)
{
// check for existing object
Object obj = session.get(TrackerObject.class, testTrackerData[row][0]);
if (obj == null)
{
TrackerObject tracker = new TrackerObject();
tracker.setId(testTrackerData[row][0]);
tracker.setName(testTrackerData[row][4]);
tracker.setGroupCode(testTrackerData[row][1]);
tracker.setCategoryCode(testTrackerData[row][2]);
tracker.setTypeCode(testTrackerData[row][3]);
tracker.setDescription(testTrackerData[row][5]);
session.save(tracker);
}
}
session.getTransaction().commit();
}
The first tracker object has a group code of "PU." When I save the tracker object, I get the exception. I've traced into the code, and found the problem is that in the ForeignKeys IsNullifiable code, a call is made to isTransient, with the entityName="CodeGroupObject" and object="PU." This eventually results in Hibernate trying to call "getId()" on the object, which is a String ("PU"). Obviously, Strings don't have getId methods, so the exception is thrown.
I don't know what I'm doing wrong here. I assume it's the mapping, but I don't understand what I'm doing wrong. Can anyone help?
Hibernate version: 3.2.6
Mapping documents:Code:
<class name="database.TrackerObject" table="tn_tracker">
<id name="id" type="string" length="20" column="tracker_id">
<generator class="assigned"/>
</id>
<property name="name" type="string" length="100" unique="true" unique-key="namegroupcat"/>
<many-to-one name="groupCode" cascade="none" class="database.CodeGroupObject" not-null="true" column="group_id" unique-key="namegroupcat"/>
<many-to-one name="categoryCode" cascade="none" class="database.CodeCategoryObject" not-null="true" column="category_id" unique-key="namegroupcat"/>
<many-to-one name="typeCode" cascade="none" class="database.CodeTypeObject" not-null="true" column="type_id"/>
<property name="description" type="string" length="254"/>
</class>
<class name="database.CodeGroupObject" table="tn_code_group">
<id name="id" type="string" length="20" column="group_id">
<generator class="assigned"/>
</id>
<property name="name" type="string" length="40" not-null="true" unique="true"/>
</class>
<class name="database.CodeCategoryObject" table="tn_code_category">
<id name="id" type="string" length="20" column="category_id">
<generator class="assigned"/>
</id>
<property name="name" type="string" length="40" not-null="true" unique="true"/>
</class>
<class name="database.CodeTypeObject" table="tn_code_type">
<id name="id" type="string" length="20" column="type_id">
<generator class="assigned"/>
</id>
<property name="name" type="string" length="40" not-null="true" unique="true"/>
</class>
Full stack trace of any exception that occurs:Code:
[java] Exception in thread "main" org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of database.BaseObject.id
[java] at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:171)
[java] at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:183)
[java] at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3596)
[java] at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:3312)
[java] at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:181)
[java] at org.hibernate.engine.ForeignKeys$Nullifier.isNullifiable(ForeignKeys.java:137)
[java] at org.hibernate.engine.ForeignKeys$Nullifier.nullifyTransientReferences(ForeignKeys.java:69)
[java] at org.hibernate.engine.ForeignKeys$Nullifier.nullifyTransientReferences(ForeignKeys.java:47)
[java] at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:288)
[java] at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
[java] at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
[java] at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
[java] at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
[java] at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
[java] at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
[java] at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
[java] at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
[java] at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
[java] at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
[java] at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[java] at java.lang.reflect.Method.invoke(Method.java:597)
[java] at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
[java] at $Proxy0.save(Unknown Source)
[java] at EventManager.loadTestTrackers(EventManager.java:300)
[java] at EventManager.main(EventManager.java:32)
[java] Caused by: java.lang.IllegalArgumentException: java.lang.ClassCastException@ebf068
[java] at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[java] at java.lang.reflect.Method.invoke(Method.java:597)
[java] at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:145)
[java] ... 25 more
Name and version of the database you are using: mysql Ver 12.18 Distrib 4.0.12, for Win95/Win98 (i32)
The generated SQL (show_sql=true):Code:
create table tn_code_category (
category_id varchar(20) not null,
name varchar(40) not null unique,
primary key (category_id)
) type=MyISAM;
create table tn_code_group (
group_id varchar(20) not null,
name varchar(40) not null unique,
primary key (group_id)
) type=MyISAM;
create table tn_code_type (
type_id varchar(20) not null,
name varchar(40) not null unique,
primary key (type_id)
) type=MyISAM;
create table tn_tracker (
tracker_id varchar(20) not null,
name varchar(100) unique,
group_id varchar(20) not null,
category_id varchar(20) not null,
type_id varchar(20) not null,
description varchar(254),
primary key (tracker_id),
unique (name, group_id, category_id)
) type=MyISAM;
alter table tn_tracker
add index FKB39F727333473E19 (type_id),
add constraint FKB39F727333473E19
foreign key (type_id)
references tn_code_type (type_id);
alter table tn_tracker
add index FKB39F72734B7D7499 (category_id),
add constraint FKB39F72734B7D7499
foreign key (category_id)
references tn_code_category (category_id);
alter table tn_tracker
add index FKB39F7273D91C26B9 (group_id),
add constraint FKB39F7273D91C26B9
foreign key (group_id)
references tn_code_group (group_id);
My objects are really basic:
Code:
public class BaseObject
{
private String id;
BaseObject() {}
public String getId() { return id; }
public void setId(String id) { this.id = id; }
}
public class NamedObject extends BaseObject
{
private String name;
NamedObject() {}
public String getName() { return name; }
public void setName(String value) { this.name = value; }
}
public class TrackerObject extends NamedObject
{
private String groupCode;
private String categoryCode;
private String typeCode;
private String description;
public TrackerObject()
{
}
public String getGroupCode() { return groupCode; }
public void setGroupCode(String value) { groupCode = value; }
public String getCategoryCode() { return categoryCode; }
public void setCategoryCode(String value) { categoryCode = value; }
public String getTypeCode() { return typeCode; }
public void setTypeCode(String value) { typeCode = value; }
public String getDescription() { return description; }
public void setDescription(String value) { description = value; }
}
public class CodeGroupObject extends NamedObject
{
CodeGroupObject() {}
static String[][] loaderData =
{
{ "PU", "Group PU" },
{ "PO", "Group PO" },
{ "MA", "Group MA" },
{ "OF", "Group OF" }
};
public static void loadDefaults() throws HibernateException
{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
for (int row = 0; row < loaderData.length; row++)
{
// check for existing object
Object obj = session.get(CodeGroupObject.class, loaderData[row][0]);
if (obj == null)
{
CodeGroupObject code = new CodeGroupObject();
code.setId(loaderData[row][0]);
code.setName(loaderData[row][1]);
session.save(code);
}
}
session.getTransaction().commit();
}
}
Debug level Hibernate log excerpt:Code:
[java] 20:34:27,902 DEBUG DriverManagerConnectionProvider:129 - returning connection to pool, pool size: 1
[java] 20:34:27,905 DEBUG SessionFactoryImpl:392 - Checking 0 named HQL queries
[java] 20:34:27,905 DEBUG SessionFactoryImpl:412 - Checking 0 named SQL queries
[java] 20:34:27,939 DEBUG SessionImpl:220 - opened session at timestamp: 12168704679
[java] 20:34:27,986 DEBUG ThreadLocalSessionContext:290 - allowing method [beginTransaction] in non-transacted context
[java] 20:34:27,986 DEBUG ThreadLocalSessionContext:300 - allowing proxied method [beginTransaction] to proceed to real session
[java] 20:34:27,986 DEBUG JDBCTransaction:54 - begin
[java] 20:34:27,986 DEBUG ConnectionManager:421 - opening JDBC connection
[java] 20:34:27,987 DEBUG DriverManagerConnectionProvider:93 - total checked-out connections: 0
[java] 20:34:27,987 DEBUG DriverManagerConnectionProvider:99 - using pooled JDBC connection, pool size: 0
[java] 20:34:27,987 DEBUG JDBCTransaction:59 - current autocommit status: false
[java] 20:34:27,987 DEBUG JDBCContext:214 - after transaction begin
[java] 20:34:27,987 DEBUG ThreadLocalSessionContext:300 - allowing proxied method [get] to proceed to real session
****
[java] 20:34:27,989 DEBUG DefaultLoadEventListener:171 - loading entity: [database.CodeGroupObject#PU]
[java] 20:34:27,990 DEBUG DefaultLoadEventListener:332 - attempting to resolve: [database.CodeGroupObject#PU]
[java] 20:34:27,992 DEBUG DefaultLoadEventListener:369 - object not resolved in any cache: [database.CodeGroupObject#PU]
[java] 20:34:27,992 DEBUG AbstractEntityPersister:3042 - Fetching entity: [database.CodeGroupObject#PU]
[java] 20:34:27,992 DEBUG Loader:1852 - loading entity: [database.CodeGroupObject#PU]
[java] 20:34:27,993 DEBUG AbstractBatcher:366 - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
[java] 20:34:27,993 DEBUG SQL:401 - select codegroupo0_.group_id as group1_7_0_, codegroupo0_.name as name7_0_ from tn_code_group codegroupo0_ where codegroupo0_.group_id=?
[java] Hibernate: select codegroupo0_.group_id as group1_7_0_, codegroupo0_.name as name7_0_ from tn_code_group codegroupo0_ where codegroupo0_.group_id=?
[java] 20:34:27,993 DEBUG AbstractBatcher:484 - preparing statement
[java] 20:34:28,008 DEBUG AbstractBatcher:382 - about to open ResultSet (open ResultSets: 0, globally: 0)
[java] 20:34:28,008 DEBUG Loader:694 - processing result set
[java] 20:34:28,009 DEBUG Loader:721 - done processing result set (0 rows)
[java] 20:34:28,009 DEBUG AbstractBatcher:389 - about to close ResultSet (open ResultSets: 1, globally: 1)
[java] 20:34:28,009 DEBUG AbstractBatcher:374 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
[java] 20:34:28,009 DEBUG AbstractBatcher:533 - closing statement
[java] 20:34:28,011 DEBUG Loader:851 - total objects hydrated: 0
[java] 20:34:28,011 DEBUG StatefulPersistenceContext:837 - initializing non-lazy collections
[java] 20:34:28,011 DEBUG Loader:1883 - done entity load
[java] 20:34:28,012 DEBUG ThreadLocalSessionContext:300 - allowing proxied method [save] to proceed to real session
[java] 20:34:28,015 DEBUG DefaultSaveOrUpdateEventListener:158 - saving transient instance
[java] 20:34:28,015 DEBUG AbstractSaveEventListener:112 - generated identifier: PU, using strategy: org.hibernate.id.Assigned
[java] 20:34:28,016 DEBUG AbstractSaveEventListener:153 - saving [database.CodeGroupObject#PU]
[java] 20:34:28,025 DEBUG ThreadLocalSessionContext:300 - allowing proxied method [get] to proceed to real session
(**** Repeat for MA, PO, and OF codes)
[java] 20:34:28,043 DEBUG JDBCTransaction:103 - commit
[java] 20:34:28,043 DEBUG SessionImpl:337 - automatically flushing session
[java] 20:34:28,043 DEBUG AbstractFlushingEventListener:58 - flushing session
[java] 20:34:28,044 DEBUG AbstractFlushingEventListener:111 - processing flush-time cascades
[java] 20:34:28,045 DEBUG AbstractFlushingEventListener:154 - dirty checking collections
[java] 20:34:28,045 DEBUG AbstractFlushingEventListener:171 - Flushing entities and processing referenced collections
[java] 20:34:28,048 DEBUG AbstractFlushingEventListener:210 - Processing unreferenced collections
[java] 20:34:28,048 DEBUG AbstractFlushingEventListener:224 - Scheduling collection removes/(re)creates/updates
[java] 20:34:28,048 DEBUG AbstractFlushingEventListener:85 - Flushed: 4 insertions, 0 updates, 0 deletions to 4 objects
[java] 20:34:28,048 DEBUG AbstractFlushingEventListener:91 - Flushed: 0 (re)creations, 0 updates, 0 removals to 0 collections
[java] 20:34:28,049 DEBUG Printer:83 - listing entities:
[java] 20:34:28,049 DEBUG Printer:90 - database.CodeGroupObject{id=OF, name=Group OF}
[java] 20:34:28,050 DEBUG Printer:90 - database.CodeGroupObject{id=MA, name=Group MA}
[java] 20:34:28,050 DEBUG Printer:90 - database.CodeGroupObject{id=PU, name=Group PU}
[java] 20:34:28,050 DEBUG Printer:90 - database.CodeGroupObject{id=PO, name=Group PO}
[java] 20:34:28,050 DEBUG AbstractFlushingEventListener:290 - executing flush
[java] 20:34:28,050 DEBUG ConnectionManager:469 - registering flush begin
[java] 20:34:28,050 DEBUG AbstractEntityPersister:2209 - Inserting entity: [database.CodeGroupObject#PU]
[java] 20:34:28,054 DEBUG AbstractBatcher:366 - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
[java] 20:34:28,054 DEBUG SQL:401 - insert into tn_code_group (name, group_id) values (?, ?)
[java] Hibernate: insert into tn_code_group (name, group_id) values (?, ?)
[java] 20:34:28,054 DEBUG AbstractBatcher:484 - preparing statement
[java] 20:34:28,054 DEBUG AbstractEntityPersister:1997 - Dehydrating entity: [database.CodeGroupObject#PU]
[java] 20:34:28,055 DEBUG AbstractEntityPersister:2209 - Inserting entity: [database.CodeGroupObject#PO]
[java] 20:34:28,055 DEBUG AbstractBatcher:226 - reusing prepared statement
[java] 20:34:28,056 DEBUG SQL:401 - insert into tn_code_group (name, group_id) values (?, ?)
[java] Hibernate: insert into tn_code_group (name, group_id) values (?, ?)
[java] 20:34:28,056 DEBUG AbstractEntityPersister:1997 - Dehydrating entity: [database.CodeGroupObject#PO]
[java] 20:34:28,056 DEBUG AbstractEntityPersister:2209 - Inserting entity: [database.CodeGroupObject#MA]
[java] 20:34:28,056 DEBUG AbstractBatcher:226 - reusing prepared statement
[java] 20:34:28,056 DEBUG SQL:401 - insert into tn_code_group (name, group_id) values (?, ?)
[java] Hibernate: insert into tn_code_group (name, group_id) values (?, ?)
[java] 20:34:28,058 DEBUG AbstractEntityPersister:1997 - Dehydrating entity: [database.CodeGroupObject#MA]
[java] 20:34:28,058 DEBUG AbstractEntityPersister:2209 - Inserting entity: [database.CodeGroupObject#OF]
[java] 20:34:28,058 DEBUG AbstractBatcher:226 - reusing prepared statement
[java] 20:34:28,058 DEBUG SQL:401 - insert into tn_code_group (name, group_id) values (?, ?)
[java] Hibernate: insert into tn_code_group (name, group_id) values (?, ?)
[java] 20:34:28,058 DEBUG AbstractEntityPersister:1997 - Dehydrating entity: [database.CodeGroupObject#OF]
[java] 20:34:28,059 DEBUG AbstractBatcher:44 - Executing batch size: 4
[java] 20:34:28,060 DEBUG AbstractBatcher:374 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
[java] 20:34:28,060 DEBUG AbstractBatcher:533 - closing statement
[java] 20:34:28,060 DEBUG ConnectionManager:478 - registering flush end
[java] 20:34:28,060 DEBUG AbstractFlushingEventListener:321 - post flush
[java] 20:34:28,061 DEBUG JDBCContext:205 - before transaction completion
[java] 20:34:28,061 DEBUG SessionImpl:393 - before transaction completion
[java] 20:34:28,061 DEBUG JDBCTransaction:116 - committed JDBC Connection
[java] 20:34:28,061 DEBUG JDBCContext:219 - after transaction completion
[java] 20:34:28,061 DEBUG ConnectionManager:404 - aggressively releasing JDBC connection
[java] 20:34:28,062 DEBUG ConnectionManager:441 - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
[java] 20:34:28,062 DEBUG DriverManagerConnectionProvider:129 - returning connection to pool, pool size: 1
[java] 20:34:28,062 DEBUG SessionImpl:422 - after transaction completion
[java] 20:34:28,062 DEBUG SessionImpl:353 - automatically closing session
[java] 20:34:28,062 DEBUG SessionImpl:273 - closing session
[java] 20:34:28,062 DEBUG ConnectionManager:375 - connection already null in cleanup : no action
[java] 20:34:28,064 DEBUG SessionImpl:220 - opened session at timestamp: 12168704680
[java] 20:34:28,065 DEBUG ThreadLocalSessionContext:290 - allowing method [beginTransaction] in non-transacted context
[java] 20:34:28,065 DEBUG ThreadLocalSessionContext:300 - allowing proxied method [beginTransaction] to proceed to real session
[java] 20:34:28,065 DEBUG JDBCTransaction:54 - begin
[java] 20:34:28,065 DEBUG ConnectionManager:421 - opening JDBC connection
[java] 20:34:28,066 DEBUG DriverManagerConnectionProvider:93 - total checked-out connections: 0
[java] 20:34:28,066 DEBUG DriverManagerConnectionProvider:99 - using pooled JDBC connection, pool size: 0
[java] 20:34:28,067 DEBUG JDBCTransaction:59 - current autocommit status: false
[java] 20:34:28,067 DEBUG JDBCContext:214 - after transaction begin
[java] 20:34:28,067 DEBUG ThreadLocalSessionContext:300 - allowing proxied method [get] to proceed to real session
[java] 20:34:28,067 DEBUG DefaultLoadEventListener:171 - loading entity: [database.TrackerObject#T01]
[java] 20:34:28,067 DEBUG DefaultLoadEventListener:332 - attempting to resolve: [database.TrackerObject#T01]
[java] 20:34:28,067 DEBUG DefaultLoadEventListener:369 - object not resolved in any cache: [database.TrackerObject#T01]
[java] 20:34:28,068 DEBUG AbstractEntityPersister:3042 - Fetching entity: [database.TrackerObject#T01]
[java] 20:34:28,068 DEBUG Loader:1852 - loading entity: [database.TrackerObject#T01]
[java] 20:34:28,068 DEBUG AbstractBatcher:366 - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
[java] 20:34:28,068 DEBUG SQL:401 - select trackerobj0_.tracker_id as tracker1_1_0_, trackerobj0_.name as name1_0_, trackerobj0_.group_id as group3_1_0_, trackerobj0_.category_id as category4_1_0_, trackerobj0_.type_id as type5_1_0_, trackerobj0_.description as descript6_1_0_ from tn_tracker trackerobj0_ where trackerobj0_.tracker_id=?
[java] Hibernate: select trackerobj0_.tracker_id as tracker1_1_0_, trackerobj0_.name as name1_0_, trackerobj0_.group_id as group3_1_0_, trackerobj0_.category_id as category4_1_0_, trackerobj0_.type_id as type5_1_0_, trackerobj0_.description as descript6_1_0_ from tn_tracker trackerobj0_ where trackerobj0_.tracker_id=?
[java] 20:34:28,068 DEBUG AbstractBatcher:484 - preparing statement
[java] 20:34:28,070 DEBUG AbstractBatcher:382 - about to open ResultSet (open ResultSets: 0, globally: 0)
[java] 20:34:28,070 DEBUG Loader:694 - processing result set
[java] 20:34:28,070 DEBUG Loader:721 - done processing result set (0 rows)
[java] 20:34:28,070 DEBUG AbstractBatcher:389 - about to close ResultSet (open ResultSets: 1, globally: 1)
[java] 20:34:28,070 DEBUG AbstractBatcher:374 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
[java] 20:34:28,071 DEBUG AbstractBatcher:533 - closing statement
[java] 20:34:28,071 DEBUG Loader:851 - total objects hydrated: 0
[java] 20:34:28,071 DEBUG StatefulPersistenceContext:837 - initializing non-lazy collections
[java] 20:34:28,071 DEBUG Loader:1883 - done entity load
[java] 20:34:28,072 DEBUG ThreadLocalSessionContext:300 - allowing proxied method [get] to proceed to real session
[java] 20:34:28,072 DEBUG DefaultLoadEventListener:171 - loading entity: [database.CodeGroupObject#PU]
[java] 20:34:28,072 DEBUG DefaultLoadEventListener:332 - attempting to resolve: [database.CodeGroupObject#PU]
[java] 20:34:28,073 DEBUG DefaultLoadEventListener:369 - object not resolved in any cache: [database.CodeGroupObject#PU]
[java] 20:34:28,073 DEBUG AbstractEntityPersister:3042 - Fetching entity: [database.CodeGroupObject#PU]
[java] 20:34:28,073 DEBUG Loader:1852 - loading entity: [database.CodeGroupObject#PU]
[java] 20:34:28,073 DEBUG AbstractBatcher:366 - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
[java] 20:34:28,073 DEBUG SQL:401 - select codegroupo0_.group_id as group1_7_0_, codegroupo0_.name as name7_0_ from tn_code_group codegroupo0_ where codegroupo0_.group_id=?
[java] Hibernate: select codegroupo0_.group_id as group1_7_0_, codegroupo0_.name as name7_0_ from tn_code_group codegroupo0_ where codegroupo0_.group_id=?
[java] 20:34:28,074 DEBUG AbstractBatcher:484 - preparing statement
[java] 20:34:28,074 DEBUG AbstractBatcher:382 - about to open ResultSet (open ResultSets: 0, globally: 0)
[java] 20:34:28,075 DEBUG Loader:694 - processing result set
[java] 20:34:28,075 DEBUG Loader:699 - result set row: 0
[java] 20:34:28,075 DEBUG Loader:1173 - result row: EntityKey[database.CodeGroupObject#PU]
[java] 20:34:28,075 DEBUG Loader:1355 - Initializing object from ResultSet: [database.CodeGroupObject#PU]
[java] 20:34:28,077 DEBUG AbstractEntityPersister:2036 - Hydrating entity: [database.CodeGroupObject#PU]
[java] 20:34:28,078 DEBUG Loader:721 - done processing result set (1 rows)
[java] 20:34:28,078 DEBUG AbstractBatcher:389 - about to close ResultSet (open ResultSets: 1, globally: 1)
[java] 20:34:28,078 DEBUG AbstractBatcher:374 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
[java] 20:34:28,079 DEBUG AbstractBatcher:533 - closing statement
[java] 20:34:28,079 DEBUG Loader:851 - total objects hydrated: 1
[java] 20:34:28,080 DEBUG TwoPhaseLoad:111 - resolving associations for [database.CodeGroupObject#PU]
[java] 20:34:28,080 DEBUG TwoPhaseLoad:209 - done materializing entity [database.CodeGroupObject#PU]
[java] 20:34:28,080 DEBUG StatefulPersistenceContext:837 - initializing non-lazy collections
[java] 20:34:28,081 DEBUG Loader:1883 - done entity load
[java] 20:34:28,081 DEBUG ThreadLocalSessionContext:300 - allowing proxied method [save] to proceed to real session
[java] 20:34:28,081 DEBUG DefaultSaveOrUpdateEventListener:158 - saving transient instance
[java] 20:34:28,081 DEBUG AbstractSaveEventListener:112 - generated identifier: T01, using strategy: org.hibernate.id.Assigned
[java] 20:34:28,081 DEBUG AbstractSaveEventListener:153 - saving [database.TrackerObject#T01]
[java] 20:34:28,083 ERROR BasicPropertyAccessor:167 - IllegalArgumentException in class: database.BaseObject, getter method of property: id