现有2张表:Userinfo(id<pk>主表),Role(id<pk>从表)通过userinfo_id(FK)与User一对一关联
Userinfo.hbm.xml:
<one-to-one name="role" class="vo.Role" property-ref="userinfo"></one-to-one>
Role.hbm.xml:
<many-to-one name="userinfo" class="vo.Userinfo" fetch="select"unique="true" cascade="all">
<column name="userInfo_id" length="32" not-null="true" />
</many-to-one>
现对Userinfo(主表)进行删除操作『表中已插入数据(插入操作没问题)』:
Userinfo user = userdao.findById("402880811a38c08e011a38c091470001");
userdao.delete(user);
报错:
INFO DefaultLoadEventListener:95 - Error performing load command
org.hibernate.HibernateException: More than one row with the given identifier was found: 402880811a38c08e011a38c091470001, for class: vo.Userinfo
请问各位怎么回事啊?!急啊!!
Userinfo.hbm.xml:
<one-to-one name="role" class="vo.Role" property-ref="userinfo"></one-to-one>
Role.hbm.xml:
<many-to-one name="userinfo" class="vo.Userinfo" fetch="select"unique="true" cascade="all">
<column name="userInfo_id" length="32" not-null="true" />
</many-to-one>
现对Userinfo(主表)进行删除操作『表中已插入数据(插入操作没问题)』:
Userinfo user = userdao.findById("402880811a38c08e011a38c091470001");
userdao.delete(user);
报错:
INFO DefaultLoadEventListener:95 - Error performing load command
org.hibernate.HibernateException: More than one row with the given identifier was found: 402880811a38c08e011a38c091470001, for class: vo.Userinfo
请问各位怎么回事啊?!急啊!!
解决方案 »
- 新手求教如何用xfire来调用HelloServlet
- 工作了半年任在困惑的菜鸟求指点。
- <html:link用<bean:write name="element"/>做参数问题
- Java程序和在Oracle数据库中调用相同的SQL查询语句,结果却不相同
- 跪求大虾帮忙解决一个struts的问题
- 最近要做OpenCRX的二次开发,没接触过,谁能介绍一下?
- tomcat5.0中怎么打不开服务器上的中文名称的word文档,急!!在浏览器中直接输也不行。
- 调查一下各位常用的IDE是什么(请附加一下理由)?UP有分
- 那位大哥知道在jsp页面里能不能使用 类似 dbgrid 的控件(不用applet)?? 在线等待!!100
- springMVC流程
- 哪位高手帮我调试一个程序,必有重谢,在线等
- 关于hibernate的程序执行到一个地方就不向下执行了的问题
错误详细点的:
20:20:25,171 INFO SessionFactoryImpl:154 - building session factory
20:20:25,187 WARN Configurator:126 - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/E:/MyEclipse%206.0/myeclipse/eclipse/plugins/com.genuitec.org.hibernate.eclipse_6.0.1.zmyeclipse601200710/myeclipse-data/3.0/lib/ehcache-1.1.jar!/ehcache-failsafe.xml
20:20:25,875 INFO SessionFactoryObjectFactory:82 - Not binding factory to JNDI, no JNDI name configured
20:20:25,937 DEBUG SQL:346 - select userinfo0_.id as id7_4_, userinfo0_.userName as userName7_4_, userinfo0_.password as password7_4_, userinfo0_.realName as realName7_4_, userinfo0_.sex as sex7_4_, userinfo0_.phone as phone7_4_, userinfo0_.email as email7_4_, role1_.id as id3_0_, role1_.userInfo_id as userInfo2_3_0_, role1_.roleName as roleName3_0_, addressboo2_.id as id0_1_, addressboo2_.User_id as User2_0_1_, addressboo2_.name as name0_1_, addressboo2_.person_name as person4_0_1_, addressboo2_.person_phone as person5_0_1_, addressboo2_.person_qq as person6_0_1_, addressboo2_.person_address as person7_0_1_, revbox3_.id as id2_2_, revbox3_.User_id as User2_2_2_, revbox3_.smsPhone as smsPhone2_2_, revbox3_.smsContext as smsContext2_2_, revbox3_.smsTime as smsTime2_2_, sendbox4_.id as id5_3_, sendbox4_.User_ID as User2_5_3_, sendbox4_.recNumber as recNumber5_3_, sendbox4_.recContext as recContext5_3_, sendbox4_.sendTime as sendTime5_3_ from infoplat.userinfo userinfo0_ left outer join infoplat.role role1_ on userinfo0_.id=role1_.userInfo_id left outer join infoplat.addressbook addressboo2_ on userinfo0_.id=addressboo2_.User_id left outer join infoplat.revbox revbox3_ on userinfo0_.id=revbox3_.User_id left outer join infoplat.sendbox sendbox4_ on userinfo0_.id=sendbox4_.User_ID where userinfo0_.id=?
Hibernate: select userinfo0_.id as id7_4_, userinfo0_.userName as userName7_4_, userinfo0_.password as password7_4_, userinfo0_.realName as realName7_4_, userinfo0_.sex as sex7_4_, userinfo0_.phone as phone7_4_, userinfo0_.email as email7_4_, role1_.id as id3_0_, role1_.userInfo_id as userInfo2_3_0_, role1_.roleName as roleName3_0_, addressboo2_.id as id0_1_, addressboo2_.User_id as User2_0_1_, addressboo2_.name as name0_1_, addressboo2_.person_name as person4_0_1_, addressboo2_.person_phone as person5_0_1_, addressboo2_.person_qq as person6_0_1_, addressboo2_.person_address as person7_0_1_, revbox3_.id as id2_2_, revbox3_.User_id as User2_2_2_, revbox3_.smsPhone as smsPhone2_2_, revbox3_.smsContext as smsContext2_2_, revbox3_.smsTime as smsTime2_2_, sendbox4_.id as id5_3_, sendbox4_.User_ID as User2_5_3_, sendbox4_.recNumber as recNumber5_3_, sendbox4_.recContext as recContext5_3_, sendbox4_.sendTime as sendTime5_3_ from infoplat.userinfo userinfo0_ left outer join infoplat.role role1_ on userinfo0_.id=role1_.userInfo_id left outer join infoplat.addressbook addressboo2_ on userinfo0_.id=addressboo2_.User_id left outer join infoplat.revbox revbox3_ on userinfo0_.id=revbox3_.User_id left outer join infoplat.sendbox sendbox4_ on userinfo0_.id=sendbox4_.User_ID where userinfo0_.id=?
20:20:26,000 INFO DefaultLoadEventListener:95 - Error performing load command
org.hibernate.HibernateException: More than one row with the given identifier was found: 402880811a38c08e011a38c091470001, for class: vo.Userinfo
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:68)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:41)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:2730)
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:365)
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:346)
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:123)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:177)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:799)
at dao.UserinfoDAO.findById(UserinfoDAO.java:69)
at test.UserInfoTest.testDelete(UserInfoTest.java:41)
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:597)
at junit.framework.TestCase.runTest(TestCase.java:164)
at junit.framework.TestCase.runBare(TestCase.java:130)
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:120)
at junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
20:20:26,015 ERROR UserinfoDAO:72 - get failed
Userinfo.hbm.xml:
<one-to-one name="role" class="vo.Role" property-ref="userinfo"> </one-to-one>
Role.hbm.xml:
<many-to-one name="userinfo" class="vo.Userinfo" fetch="select"unique="true" cascade="all">
<column name="userInfo_id" length="32" not-null="true" />
</many-to-one>
private String id;
private Userinfo userinfo;
private String roleName;
private Set roleModules = new HashSet(0);
userinfo.java:
private String id;
private String userName;
private String password;
private String realName;
private String sex;
private String email;
private String phone;
private Role role;
private Addressbook addressbook;
private Revbox revbox;
private Sendbox sendbox;
private Set specialnumbers = new HashSet(0);
数据库:
create table Role
(
id varchar(32) not null,
roleName varchar(50) not null,
userInfo_id varchar(32) not null,//是不是这个问题?
primary key (id)
);
create table userInfo
(
id varchar(32) not null,
userName varchar(32) not null,
password varchar(16) not null,
realName varchar(50) not null,
sex varchar(10) not null,
phone varchar(16) not null,
email varchar(50) not null,
primary key (id)
);
另外。。要想使用MYSQL的级联更新或删除是否将restrict改为CASCADE?
alter table Role add constraint FK_Reference_5 foreign key (userInfo_id)
references userInfo (id) on delete restrict on update restrict;