小弟写了三张表 但运行异常 两张表的没有问题下面是代码 出现 第一张表 one-to-many class="com.dao.Ta2"/>的错误 异常信息在下面主表的 xml<hibernate-mapping>
<class name="com.dao.Ta1" table="ta1" schema="dbo" catalog="txl">
<id name="ids" type="java.lang.Integer">
<column name="ids" />
<generator class="native" />
</id>
<property name="names" type="java.lang.String">
<column name="names" length="20" />
</property>
<set name="table" cascade="all" inverse="true">
<key column="waijian"></key>
<one-to-many class="com.dao.Ta2"/>
</set>
</class>
</hibernate-mapping>
第二张表的xml<hibernate-mapping>
<class name="com.dao.Ta2" table="ta2" schema="dbo" catalog="txl">
<id name="ids" type="java.lang.Integer">
<column name="ids" />
<generator class="native" />
</id>
<property name="tel" type="java.lang.String">
<column name="tel" length="20" />
</property>
<many-to-one name="ta3" class="com.dao.Ta3" column="waijian" ></many-to-one>
</class>
</hibernate-mapping>
第三张表的xml<hibernate-mapping>
<class name="com.dao.Ta3" table="ta3" schema="dbo" catalog="txl">
<id name="ids" type="java.lang.Integer">
<column name="ids" />
<generator class="native" />
</id>
<property name="zs" type="java.lang.String">
<column name="zs" length="20" />
</property>
<many-to-one name="ta2" class="com.dao.Ta2" column="waijian" ></many-to-one>
</class>
</hibernate-mapping>下面是DTO主表的 DTO private Integer ids;
private String waijian;
private String names;
private Set table = new HashSet();
第二张表的DTO private Integer ids;
private String waijian;
private String tel;
private Ta3 ta3;
第三张表的DTO private Integer ids;
private String waijian;
private String zs;
private Ta2 ta2;
集联添加出现以下异常Exception in thread "main" org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of com.dao.Ta2.ids
at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:171)
at org.hibernate.tuple.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:176)
at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3257)
at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:2983)
at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.getEntityState(AbstractSaveEventListener.java:460)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:84)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:502)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:494)
at org.hibernate.engine.CascadingAction$1.cascade(CascadingAction.java:134)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:213)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:157)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:108)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:290)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:185)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:160)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:108)
at org.hibernate.engine.Cascade.cascade(Cascade.java:248)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:410)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:299)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:167)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:101)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:530)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:518)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:514)
at com.dao.Ta1DAO.insert(Ta1DAO.java:39)
at text.main.main(main.java:32)
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)
... 32 more
<class name="com.dao.Ta1" table="ta1" schema="dbo" catalog="txl">
<id name="ids" type="java.lang.Integer">
<column name="ids" />
<generator class="native" />
</id>
<property name="names" type="java.lang.String">
<column name="names" length="20" />
</property>
<set name="table" cascade="all" inverse="true">
<key column="waijian"></key>
<one-to-many class="com.dao.Ta2"/>
</set>
</class>
</hibernate-mapping>
第二张表的xml<hibernate-mapping>
<class name="com.dao.Ta2" table="ta2" schema="dbo" catalog="txl">
<id name="ids" type="java.lang.Integer">
<column name="ids" />
<generator class="native" />
</id>
<property name="tel" type="java.lang.String">
<column name="tel" length="20" />
</property>
<many-to-one name="ta3" class="com.dao.Ta3" column="waijian" ></many-to-one>
</class>
</hibernate-mapping>
第三张表的xml<hibernate-mapping>
<class name="com.dao.Ta3" table="ta3" schema="dbo" catalog="txl">
<id name="ids" type="java.lang.Integer">
<column name="ids" />
<generator class="native" />
</id>
<property name="zs" type="java.lang.String">
<column name="zs" length="20" />
</property>
<many-to-one name="ta2" class="com.dao.Ta2" column="waijian" ></many-to-one>
</class>
</hibernate-mapping>下面是DTO主表的 DTO private Integer ids;
private String waijian;
private String names;
private Set table = new HashSet();
第二张表的DTO private Integer ids;
private String waijian;
private String tel;
private Ta3 ta3;
第三张表的DTO private Integer ids;
private String waijian;
private String zs;
private Ta2 ta2;
集联添加出现以下异常Exception in thread "main" org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of com.dao.Ta2.ids
at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:171)
at org.hibernate.tuple.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:176)
at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3257)
at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:2983)
at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.getEntityState(AbstractSaveEventListener.java:460)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:84)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:502)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:494)
at org.hibernate.engine.CascadingAction$1.cascade(CascadingAction.java:134)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:213)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:157)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:108)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:290)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:185)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:160)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:108)
at org.hibernate.engine.Cascade.cascade(Cascade.java:248)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:410)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:299)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:167)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:101)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:530)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:518)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:514)
at com.dao.Ta1DAO.insert(Ta1DAO.java:39)
at text.main.main(main.java:32)
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)
... 32 more
解决方案 »
- 今天去中软国际面试 他们的面试题
- 个人对ext+struts2 上传文件的一些总结,欢迎指正
- hello,我想问个啊,有个jsp页面连接到一个servlet,如何在servlet里得到这个jsp的文件名或路径
- 字符转换小问题
- 请问达人,北京哪家jsp个人虚拟空间性价比高一点?
- struts-config.xml报这种错误,如何解决
- JAR命令问题???请帮忙解决!!!!
- 大家帮忙看一下,Tomcat的窗口错误信息,什么意思
- 有关于resin的连接池问题
- 请问大家用什么jsp调试开发工具,jsp有什么调试技巧吗?
- 求助:tomcat服务器为什么启动不了??
- struts基础问题,希望大家帮忙解决下!谢谢了!
2. 在读取记录中的HQL,参数必须匹配,不然出错
例如:
表:table_a ,table_b
主键类型都是String id;table_a 多对1table_b根据table_b的Id来查询table_a里面的记录,hql如下
from table_a A Where A.b = ? ;此时在传入?的参数必须是一个table_b类的实例,不能是一个String类型的id
在hibernate 3.2之前的版本用String类型的id是不会出错的。