表面上看来好象是强制类型转换出了问题...但是错误信息实在太少了...不过我估计问题出在这里 你的author类里同时有:
private int id;
private String authorid;无论你这个author对象与其他对象是什么关系,用于映射的String authorid字段都绝对不应该在author对象本身中...另外一个很重要的问题:int id ... 我记得我用hibernate时标识符好象都是用的String哦 我不太清楚这与你用的关系数据库有没有关系...但是最好还是用String吧..因为Hibernate生成的唯一标识是32位长的16进制的...换言之...里面会有ABCDEF...你用int来保存恐怕不太妥当...
private int id;
private String authorid;无论你这个author对象与其他对象是什么关系,用于映射的String authorid字段都绝对不应该在author对象本身中...另外一个很重要的问题:int id ... 我记得我用hibernate时标识符好象都是用的String哦 我不太清楚这与你用的关系数据库有没有关系...但是最好还是用String吧..因为Hibernate生成的唯一标识是32位长的16进制的...换言之...里面会有ABCDEF...你用int来保存恐怕不太妥当...
解决方案 »
- struts2读取数据库内容并显示的问题
- 求救!整合TOMCAT和APACHE并绑定域名问题
- java连接数据库的错误,请人指点
- 应用启动时 出现错误
- The server encountered an internal error () that prevented it from fulfilling th
- 请推荐给我一个java的 text to speech 库
- 在hibernate查询语句参数中如果有中文,就有错误
- jbuilder9+struts1.0,报错: Missing message for key login.title!我的资源文件有问题吗?
- ear包是不是通用的?
- 问几个最基本的问题(没学过J2EE)
- jcreater3.00在编辑时如何设置就可以有提示功能呀。
- 研究过TOMCAT源码或者对HttpServletRequest了解的人进来。
我建議你把<generator class="foreign">
<param name="property">person</param>
</generator>
中的"foreign"改成assign然後自己指定一個id值就知道是不是上面的錯誤了. 水平有現,僅供參考!
改成
<generator class="uuid.hex"/>
试试
改成这样改是可以的;但是ID在数据库中就会出现:2c0fa968fe51c3fa00fe51ce2c4d0026
import java.util.*;
public class Author{ private String alias = null;
private Person person = null;
private long authorid;
/**
* @return
*/
public String getAlias() {
return alias;
} /**
* @return
*/
public Person getPerson() {
return person;
} /**
* @param string
*/
public void setAlias(String string) {
alias = string;
}
/**
* @param person
*/
public void setPerson(Person person) {
this.person = person;
}
public long getAuthorid() {
return authorid;
}
public void setAuthorid(long authorid) {
this.authorid = authorid;
}}
Person.javapackage goodok;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class Person { private String name = null;
private String email = null;
private long personid; public Person(){} /**
* @return
*/
public String getEmail() {
return email;
} /**
* @return
*/ /**
* @return
*/
public String getName() {
return name;
} /**
* @param string
*/
public void setEmail(String string) {
email = string;
}
public void setName(String string) {
name = string;
}
public long getPersonid() {
return personid;
}
public void setPersonid(long personid) {
this.personid = personid;
}}Person.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>
<class name="goodok.Person" table="person">
<id name="personid"
column="id"
type="java.lang.Long"
length="10">
<generator class="identity"/>
</id>
<property name="name" column="name" />
<property name="email" column="email" />
</class>
</hibernate-mapping>
Author.hbm.xml<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>
<class name="goodok.Author" table="author" >
<id name="authorid"
column="id"
type="java.lang.Long"
length="10">
<!-- 这里我把author作为主表,外键的描述也可以在Person.hbm.xml中表述,也是可以的-->
<generator class="foreign">
<param name="property">person</param>
</generator>
</id> <property name="alias" column="alias" />
<one-to-one name="person" class="goodok.Person" cascade="all" constrained="true" />
</class>
</hibernate-mapping>
在执行的时候出现这样的错误:
Hibernate: update person set name=?, email=? where id=?
11:06:43,156 ERROR SessionImpl:2343 - Could not synchronize database state with session
net.sf.hibernate.HibernateException: Batch update row count wrong: 0
at net.sf.hibernate.impl.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:65)
at net.sf.hibernate.impl.BatcherImpl.executeBatch(BatcherImpl.java:122)
at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2385)
at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2336)
at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2204)
at net.sf.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:61)
at goodok.HibernateBase.endTransaction(HibernateBase.java:54)
at goodok.PersonBean.addPerson(PersonBean.java:32)
at org.apache.jsp.test1$jsp._jspService(test1$jsp.java:131)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
at java.lang.Thread.run(Thread.java:536)
StandardWrapperValve[debugjsp]: Servlet.service() for servlet debugjsp threw exception
javax.servlet.ServletException: Batch update row count wrong: 0
javax.servlet.ServletException: Batch update row count wrong: 0
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:471)
at org.apache.jsp.test1$jsp._jspService(test1$jsp.java:147)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
at java.lang.Thread.run(Thread.java:536)