Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java EE 综合讨论区 » Hibernate  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 hibernate无法持久化数据到数据库
ltshark





发贴: 4
积分: 0
于 2006-10-31 01:49 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
现象:使用jboss4.0.5+hibernate,使用以下第1点到第5点的配置,可以使用hibernate查询数据库,但是无法保存数据到mysql数据库。已经测试了一个星期,实在是山穷水尽了,请帮忙指教,不胜感激。

1、这是mysql-ds.xml文件
<datasources>
<local-tx-datasource>
<jndi-name>mysqlds</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/test</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>XXXX</user-name>
<password>XXXX</password>
<connection-property name="useUnicode">true</connection-property>
<connection-property name="characterEncoding">utf8</connection-property>
</local-tx-datasource>
</datasources>
2、这是hibernate-service.xml文件
<server>
<mbean code="org.jboss.hibernate.jmx.Hibernate"
name="jboss.har:service=TestHibernate">
<attribute name="DatasourceName">java:/mysqlds</attribute>
<attribute name="Dialect">org.hibernate.dialect.MySQLDialect</attribute>
<attribute name="SessionFactoryName">java:hibernate/TestSessionFactory</attribute>
<attribute name="CacheProviderClass">org.hibernate.cache.HashtableCacheProvider</attribute>
<attribute name="ShowSqlEnabled">true</attribute>
<attribute name="ScanForMappingsEnabled">true</attribute>
<!-- <attribute name="Hbm2ddlAuto">create-drop</attribute> -->
</mbean>
</server>
3、这是数据库脚本
CREATE TABLE account
(accid VARCHAR(30) NOT NULL PRIMARY KEY,
accname VARCHAR(30)
);
4、这是对应的Account.hbm.xml文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2006-10-31 1:25:00 by Hibernate Tools 3.1.0 beta3 -->
<hibernate-mapping>
<class name="com.sxdx.dsc.entity.Account" table="account" catalog="test">
<id name="accid" type="string">
<column name="accid" length="30" />
<generator class="assigned" />
</id>
<property name="accname" type="string">
<column name="accname" length="30" />
</property>
</class>
</hibernate-mapping>
5、这是在Servlet里面调用hibernate试图持久化Account 对象的代码:
Account acc = new Account();
acc.setAccid(accid);
acc.setAccname(accname);
Context ctx = new InitialContext();
SessionFactory sessionFactory = (SessionFactory) ctx.lookup("java:hibernate/TestSessionFactory");
Session hsession = sessionFactory.openSession();
Transaction tx = hsession.beginTransaction();
hsession.save(acc);
tx.commit();
hsession.close();



作者 Re:hibernate无法持久化数据到数据库 [Re:ltshark]
ltshark





发贴: 4
积分: 0
于 2006-10-31 01:50 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
6、这是出错提示:
01:37:23,118 ERROR [BasicPropertyAccessor] IllegalArgumentException in class: com.sxdx.dsc.entity.Account,

getter method of property: accid
01:37:23,119 ERROR [STDERR] org.hibernate.PropertyAccessException: IllegalArgumentException occurred

calling getter of com.sxdx.dsc.entity.Account.accid
at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:171)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:183)
at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3524)
at org.hibernate.id.Assigned.generate(Assigned.java:28)
at

org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:98)
at

org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrU

pdateEventListener.java:186)
at

org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener

.java:33)
at

org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListene

r.java:175)
at

org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at

org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListen

er.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
at com.sxdx.dsc.test.HibernateSavServlet.doPost(HibernateSavServlet.java:61)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
at org.jboss.web.tomcat.tc5.session.ClusteredSessionValve.invoke(ClusteredSessionValve.java:87)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at

org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProto

col.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:595)
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(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:145)
... 35 more
01:37:23,128 ERROR [CachedConnectionValve] Application error: HibernateSav did not complete its

transaction



作者 Re:hibernate无法持久化数据到数据库 [Re:ltshark]
ltshark





发贴: 4
积分: 0
于 2006-10-31 08:30 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
不知道有没有hibernate配置成功过的,有哪些地方要配置的啊,请指点一下。


作者 Re:hibernate无法持久化数据到数据库 [Re:ltshark]
lixj0571





发贴: 84
积分: 2
于 2006-11-17 21:59 user profilesend a private message to usersend email to lixj0571search all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
你可以换一种主键生成方式,可以考虑采用guid
<generator class="assigned" />
或都accid是你的业务主键,可以再加一个id作为这个表的主键



作者 Re:hibernate无法持久化数据到数据库 [Re:ltshark]
java大校





发贴: 4
积分: 0
于 2006-11-19 13:49 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
把他细粒度话分呢



作者 Re:hibernate无法持久化数据到数据库 [Re:ltshark]
java大校





发贴: 4
积分: 0
于 2006-11-19 13:53 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
那个get方法和映射的栏位的类型不同啊!所以才有IllegalArgumentException in class: com.sxdx.dsc.entity.Account, getter method of property: accid
不知道我说的对不对,你试一下吧!





flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923