spring与hibernate整合时出现问题!

Thiskiller 2012-05-19 08:39:18
org.springframework.jdbc.UncategorizedSQLException: Hibernate flushing: Could not execute JDBC batch update; uncategorized SQLException for SQL [insert into User (userpassword, username) values (?, ?)]; SQL state [HY000]; error code [1364]; Field 'userid' doesn't have a default value; nested exception is java.sql.BatchUpdateException: Field 'userid' doesn't have a default value
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.orm.hibernate3.HibernateTransactionManager.convertJdbcAccessException(HibernateTransactionManager.java:801)
at org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:787)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:663)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy10.insertUser(Unknown Source)
at cn.lan.user.test.UserTest.save(UserTest.java:27)
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 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.sql.BatchUpdateException: Field 'userid' doesn't have a default value
at com.mysql.jdbc.ServerPreparedStatement.executeBatch(ServerPreparedStatement.java:648)
at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:268)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:655)
... 32 more

求解!!!!!!!!
...全文
209 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
dw_java08 2012-05-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

我知道了,原来是我的数据库的问题,解决了,大家一定要看看索要连接的数据库是不是你想要的!⊙﹏⊙b汗
[/Quote]
楼主是因为数据库连错造成的?
NoTargetException 2012-05-19
  • 打赏
  • 举报
回复
没有设置主键生成方式。
Thiskiller 2012-05-19
  • 打赏
  • 举报
回复
我知道了,原来是我的数据库的问题,解决了,大家一定要看看索要连接的数据库是不是你想要的!⊙﹏⊙b汗
Thiskiller 2012-05-19
  • 打赏
  • 举报
回复
楼上的我试过后还是错的!
Intboy 2012-05-19
  • 打赏
  • 举报
回复
应该是你数据库里面已经生成了表结构,含有userid,你现在就是注释了userid项也有问题啊。注释掉,重新生成下表结构试试。
热烈的红颜 2012-05-19
  • 打赏
  • 举报
回复
<id name="username" length="20"/>
1,如果你配置为主键就可以不设置 比如:<key></key>
2,设置可以为空 <id name="username" length="20" null="true"/>
Thiskiller 2012-05-19
  • 打赏
  • 举报
回复
能注释的都注释了,只留下两个字段的set,get方法,但userid是怎么冒出来的,先前我有userid这个字段,但是因为出现这个问题所以删除了!是不是因为jar包的问题,我先前有一个能实现功能的实例,但是等我把jar包从2.5升级到3.0时就出现问题了!

先前的:beans.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

后来的beans.xml
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd" >

这是vo类!
public class User {
/* 用户ID */
/*private int userid;*/
/* 用户昵称 */
private String username;
/* 用户密码 */
private String userpassword;
/* 用户性别 */
/*private Gender gender = Gender.MAN;
用户身份证
private String personalid;
用户真实姓名
private String realname;
用户邮箱
private String mailbox;*/

public User() {
}

public User(String username, String userpassword) {
this.username = username;
this.userpassword = userpassword;
}

/*public int getUserid() {
return userid;
}

public void setUserid(int userid) {
this.userid = userid;
}
*/
public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getUserpassword() {
return userpassword;
}

public void setUserpassword(String userpassword) {
this.userpassword = userpassword;
}

/*public Gender getGender() {
return gender;
}

public void setGender(Gender gender) {
this.gender = gender;
}

public String getPersonalid() {
return personalid;
}

public void setPersonalid(String personalid) {
this.personalid = personalid;
}

public String getRealname() {
return realname;
}

public void setRealname(String realname) {
this.realname = realname;
}

public String getMailbox() {
return mailbox;
}

public void setMailbox(String mailbox) {
this.mailbox = mailbox;
}*/

}
五哥 2012-05-19
  • 打赏
  • 举报
回复
Could not execute JDBC batch update; uncategorized SQLException for SQL [insert into User (userpassword, username) values (?, ?)]; SQL state [HY000]; error code [1364]; Field 'userid' doesn't have a default value; nested exception is java.sql.BatchUpdateException: Field 'userid' doesn't have a default value


需要放入userid
Thiskiller 2012-05-19
  • 打赏
  • 举报
回复
这个是我想生成表的xml文件,以前有userid,但是后来我删了,还出现userid为空!
<?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">
<hibernate-mapping package="cn.lan.user.vo" >
<class name="User">
<!-- 缓存问题以后考虑 -->
<id name="username" length="20"/>

<property
name="userpassword"
length="20"
not-null="true" />
</class>

</hibernate-mapping>
_jerrytiger 2012-05-19
  • 打赏
  • 举报
回复
主 键
QAZ503602501 2012-05-19
  • 打赏
  • 举报
回复
Field 'userid' doesn't have a default value
这个userid ,你没有值啊!!没有设置自动生成!
_jerrytiger 2012-05-19
  • 打赏
  • 举报
回复
userId 为空? 你逐渐生成用的生么方式?

81,087

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧