一方的xml:<hibernate-mapping>
<class catalog="hsly" name="com.hsly.hibernate.Product"
schema="dbo" table="Product" dynamic-update="true">
<id name="productId" type="int">
<column name="productId"/>
<generator class="native"/>
</id>
<property name="productNo" type="string">
<column length="50" name="productNo"/>
</property>
<property name="productName" type="string">
<column length="50" name="productName"/>
</property>
<property name="price" type="big_decimal">
<column name="price" precision="18"/>
</property>
<property name="count" type="java.lang.Integer">
<column name="_count"/>
</property>
<many-to-one column="productClassId" name="productClass" not-null="true"/>
</class>
<sql-query name="test">
<return alias="product" class="com.hsly.hibernate.Product"/>
select a.* from Product a,ProductClass b where a.productClassId=b.productClassId and b.productClassName='er'
</sql-query>
<sql-query name="test2">
<return alias="product" class="com.hsly.hibernate.ProductClass"/>
select * from ProductClass
</sql-query>
</hibernate-mapping>多方的xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2009-5-30 18:30:49 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
<class catalog="hsly" name="com.hsly.hibernate.ProductClass" schema="dbo" table="ProductClass">
<id name="productClassId" type="int">
<column name="productClassId"/>
<generator class="native"/>
</id>
<property name="productClassName" type="string">
<column length="50" name="productClassName"/>
</property>
<property name="order" type="java.lang.Integer">
<column name="_order"/>
</property>
<property name="parentId" type="java.lang.Integer">
<column name="parentId"/>
</property>
<bag name="products" inverse="true" cascade="all" order-by="productId" table="Product">
<key column="productClassId"/>
<one-to-many class="com.hsly.hibernate.Product"/>
</bag>
</class>
</hibernate-mapping>Main方法里的调用代码如下:
Session sess=HibernateUtil.getSessionFactory().openSession();
Transaction tx=sess.beginTransaction(); ProductClass pc=(ProductClass)sess.load( ProductClass.class,3); Product p=new Product();
p.setProductName("化妆品");
p.setCount(22);
p.setPrice(new BigDecimal(33.33));
p.setProductNo("23");
p.setProductClass(pc);
pc.getProducts().add(p);
sess.update(pc);
tx.commit();出错信息:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at com.microsoft.jdbc.sqlserver.tds.TDSRPCParameter.write(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.submitRequest(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.execute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeInternal(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.execute(Unknown Source)
at org.hibernate.id.IdentityGenerator$InsertSelectDelegate.executeAndExtract(IdentityGenerator.java:108)
at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2158)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2638)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)
at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:218)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:268)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:216)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
at org.hibernate.engine.Cascade.cascade(Cascade.java:130)
at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:131)
at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:122)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:65)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at com.hsly.test.Main.main(Main.java:32)
Java Result: 1
<class catalog="hsly" name="com.hsly.hibernate.Product"
schema="dbo" table="Product" dynamic-update="true">
<id name="productId" type="int">
<column name="productId"/>
<generator class="native"/>
</id>
<property name="productNo" type="string">
<column length="50" name="productNo"/>
</property>
<property name="productName" type="string">
<column length="50" name="productName"/>
</property>
<property name="price" type="big_decimal">
<column name="price" precision="18"/>
</property>
<property name="count" type="java.lang.Integer">
<column name="_count"/>
</property>
<many-to-one column="productClassId" name="productClass" not-null="true"/>
</class>
<sql-query name="test">
<return alias="product" class="com.hsly.hibernate.Product"/>
select a.* from Product a,ProductClass b where a.productClassId=b.productClassId and b.productClassName='er'
</sql-query>
<sql-query name="test2">
<return alias="product" class="com.hsly.hibernate.ProductClass"/>
select * from ProductClass
</sql-query>
</hibernate-mapping>多方的xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2009-5-30 18:30:49 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
<class catalog="hsly" name="com.hsly.hibernate.ProductClass" schema="dbo" table="ProductClass">
<id name="productClassId" type="int">
<column name="productClassId"/>
<generator class="native"/>
</id>
<property name="productClassName" type="string">
<column length="50" name="productClassName"/>
</property>
<property name="order" type="java.lang.Integer">
<column name="_order"/>
</property>
<property name="parentId" type="java.lang.Integer">
<column name="parentId"/>
</property>
<bag name="products" inverse="true" cascade="all" order-by="productId" table="Product">
<key column="productClassId"/>
<one-to-many class="com.hsly.hibernate.Product"/>
</bag>
</class>
</hibernate-mapping>Main方法里的调用代码如下:
Session sess=HibernateUtil.getSessionFactory().openSession();
Transaction tx=sess.beginTransaction(); ProductClass pc=(ProductClass)sess.load( ProductClass.class,3); Product p=new Product();
p.setProductName("化妆品");
p.setCount(22);
p.setPrice(new BigDecimal(33.33));
p.setProductNo("23");
p.setProductClass(pc);
pc.getProducts().add(p);
sess.update(pc);
tx.commit();出错信息:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at com.microsoft.jdbc.sqlserver.tds.TDSRPCParameter.write(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.submitRequest(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.execute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeInternal(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.execute(Unknown Source)
at org.hibernate.id.IdentityGenerator$InsertSelectDelegate.executeAndExtract(IdentityGenerator.java:108)
at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2158)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2638)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)
at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:218)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:268)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:216)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
at org.hibernate.engine.Cascade.cascade(Cascade.java:130)
at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:131)
at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:122)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:65)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at com.hsly.test.Main.main(Main.java:32)
Java Result: 1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
楼主你仔细看下你写的那个main方法里,这句是报数组下标越界异常,错在调用本地的
一个方法arraycopy(Native Method) ,你看下你的方法调用有没有错,建议看下相关
帮助文档。