Hibernate数据插入、更新失败

时间:2008-06-04 19:25:02   来源:论坛整理  作者:  编辑:chinaitzhe
刚刚接触SSH,做一个用户治理程序,查询和删除数据操作都能正常工作,唯独插入和更新数据不能成功,控制台没有提示任何错误,也不显示生成的sql语句。我在网上查了很多文章,一直也没找到解决的办法,特来请教!现将部分配置文件和代码摘抄如下:
//************************
applicationContext.xml文件
<beans>


<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource">

<property name="driverClass">
<value>oracle.jdbc.driver.OracleDriver </value>
</property>
<property name="jdbcUrl">
<value>jdbc:oracle:thin:@localhost:1521:oradb </value>
</property>
<property name="user">
<value>sa </value>
</property>
<property name="password">
<value>pass </value>
</property>

</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
<prop key="hibernate.connection.autocommit">true </prop>
<prop key="hibernate.show_sql">true </prop>

</props>
</property>
<property name="mappingResources">
<list>
<value>/org/bh/vo/User.hbm.xml </value>
</list>
</property> </bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<bean id="iuserdao" class="org.bh.dao.user.IUserDAO" abstract="true"> </bean>
<bean id="iuserdaoimpl" class="org.bh.dao.user.impl.IUserDAOImpl" parent="iuserdao">
<property name="hibernateTemplate">
<ref bean="hibernateTemplate"/>
</property>
</bean>
<bean name="/user" class="org.bh.struts.action.UserAction" singleton="false">
<property name="iuserdao">
<ref bean="iuserdaoimpl" />
</property>
</beans>
//***********************************
User.hbm.xml文件
<hibernate-mapping package="org.bh.vo">
<class name="User" table="BH_USER">
<id name="id" column="USER_ID">
<generator class="assigned">
</generator>
</id>
<property name="username" column="USER_NAME" type="string"/>
<property name="age" column="AGE" type="int" />
</class>
</hibernate-mapping>
//***************
web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>OpenSessionInView </filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>

<filter-mapping>
<filter-name>OpenSessionInView </filter-name>
<url-pattern>*.do </url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigLocation </param-name>
<param-value>/WEB-INF/classes/applicationContext.xml </param-value>
</context-param>
<servlet>
<servlet-name>context </servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet </servlet-class>
<load-on-startup>0 </load-on-startup>
</servlet>
<servlet>
<servlet-name>action </servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet </servlet-class>
<init-param>
<param-name>config </param-name>
<param-value>/WEB-INF/struts-config.xml </param-value>
</init-param>
<init-param>
<param-name>debug </param-name>
<param-value>3 </param-value>
</init-param>
<init-param>
<param-name>detail </param-name>
<param-value>3 </param-value>
</init-param>
<load-on-startup>1 </load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action </servlet-name>
<url-pattern>*.do </url-pattern>
</servlet-mapping>
</web-app>


//*************************
User.java文件
package org.bh.vo;

public class User {

/** age property */
private int age;

/** userid property */
private String userid;

/** username property */
private String username;


public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
public String getUserid() {
return userid;
}

public void setUserid(String userid) {
this.userid = userid;
}

public String getUsername() {
return username;
}

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


}
public class IUserDAOImpl extends HibernateDaoSupport implements IUserDAO {

public void updateUser(User user) throws Exception{
super.getSession().update(user);
}

public void addUser(User user) throws Exception{
super.getSession().save(user);//我debug调试了一下,发现在这里能顺利通过,但在数据库中看不到添加的数据
System.out.println("add user");

}

}
//***********************
写的有点乱,请各位见谅!问题已经困扰我好几天了,恳请各位帮忙!谢谢!
网友回复:super.getSession().save(user);//我debug
@(&%(#%(@有你那么写的么?
就直接session.save(User)就可以了呀
你还super.getSession()。。。。getSession是获取数据然后再在获取的数据里面保存对象
那也只是在缓存里面保存而已
你最后又没提交
我连事务都没看到。。。
他插的进去就有鬼了。。。
网友回复:你连生成的sql都没看到,只能说明他根本就没往数据库里面插呀
网友回复:throws Exception改称try catch一下
到底有没有错误
网友回复:
引用 3 楼 jdlsfl 的回复:
throws Exception改称try catch一下
到底有没有错误

我试过了,没有提示错误!
网友回复:
引用 1 楼 yami251139 的回复:
super.getSession().save(user);//我debug
@(&%(#%(@有你那么写的么?
就直接session.save(User)就可以了呀
你还super.getSession()。。。。getSession是获取数据然后再在获取的数据里面保存对象
那也只是在缓存里面保存而已
你最后又没提交
我连事务都没看到。。。
他插的进去就有鬼了。。。

谢谢你的回答,请问:Spring是否会帮忙治理事务?我是看了一个ssh的视频教学,参考它的代码写的,对ssh学习深度还不够,很多知识理解的有偏差,有待学习!
网友回复:要配上声明式事务
demo
Java code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





    <bean id="transactionManager"

        class="org.springframework.orm.jpa.JpaTransactionManager">

        <property name="entityManagerFactory"

            ref="entityManagerFactory" />

    </bean>

    <bean id="userServer" parent="baseTxProxy">

        <property name="target">

            <bean class="com.syj.blog.server.UserServer">

                <property name="userDao">

                    <ref local="userDao" />

                </property>

            </bean>

        </property>

    </bean>

    <bean id="baseTxProxy" abstract="true"

        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

        <property name="transactionManager">

            <ref bean="transactionManager" />

        </property>

        <property name="transactionAttributes">

            <props>

                <prop key="save*">PROPAGATION_REQUIRED,-Throwable</prop>

                <prop key="remove*">

                    PROPAGATION_REQUIRED,-Throwable

                </prop>

            </props>

        </property>

    </bean>




网友回复:UserServer类中以save或remove开头的方法就有事务了

你要有个
Java code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





    <!--hibernate事务-->

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

        <property name="sessionFactory">

            <ref local="sessionFactory"/>

        </property>

    </bean>




网友回复:像ls那样用spring就行了。。。
不过你还是要理解才行的。。。
网友回复:楼上的应该解决来了吧
网友回复:该回复于2008-06-04 09:28:36被版主删除
网友回复:spring是可以不用在代码上写事务提交等的,通过配置就可以了,你的配置文件里面没有,而代码里面也没写事务,真的,插得进去有“鬼”,例如:
<bean id="userDAOProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="userDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED </prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly </prop>
<prop key="is*">PROPAGATION_REQUIRED,readOnly </prop>
</props>
</property>
</bean>

网友回复:谢谢sunyujia,问题已经解决了!
关键字:Hibernate,数据,插入,更新,失败,

相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面