Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp
Hi everyone,
I have a simple question:
I have 2 classes:
------------------
Class DeviceData {
private Long id;
private String
infoName;
}
Class ConnectorInfo {
private Long con_id;
private String
conName;
private String jndi;
}------------------
infoName in ConnectorInfo is unique and infoName in DeviceData references it. in my mapping file:
-----------------
Quote:
<class name="DeviceData" table="device_data">
<id name="id" typ="long" column="data_id"><generator class="native"/></id>
<many-to-one name="infoName" class="ConnectorInfo" property-ref="conName"/>
</class>
<class name="ConnectorInfo" table="con_info">
<id name="con_id" type="long" column="con_id"><generator class="native"/></id>
<property name="conName" column="con_name" type="string"/>
</class>
-----------------------
in my testing class:
Code:
ConnectorInfo con = new ConnectorInfo("new Name");
connectorDAO.saveOrUpdate(con);
DeviceData data = new DeviceData();
data.setInfoName(con.getConName());
dataDAO.saveOrUpdate(data);
then I got exception:
org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of com.gehc.device.kernel.api.ConnectorInfo.connectorName
at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:171)
at org.hibernate.tuple.AbstractEntityTuplizer.getPropertyValue(AbstractEntityTuplizer.java:270)
at org.hibernate.tuple.AbstractEntityTuplizer.getPropertyValue(AbstractEntityTuplizer.java:280)
at org.hibernate.persister.entity.AbstractEntityPersister.getPropertyValue(AbstractEntityPersister.java:3251)
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:114)
at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:221)
at org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:476)
at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:2802)
at org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:457)
at org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:180)
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:104)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:195)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:908)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:274)
at $Proxy0.flush(Unknown Source)
at com.gehc.device.db.dao.hibernate.GenericHibDAO.saveOrUpdate(GenericHibDAO.java:111)
at com.gehc.device.db.test.TestDevice.setUpDeviceData(TestDevice.java:140)
at com.gehc.device.db.test.TestDevice.setUp(TestDevice.java:74)
at junit.framework.TestCase.runBare(TestCase.java:125)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:145)
... 33 more
Could any one tell me what the problem is, please? I really appreciate your help.
Young