在网上对比了很多次 感觉没有什么问题, 但是不能插入数据,  
只发出了 Hibernate: select hibernate_sequence.nextval from dual 语句 没有insert(若是手动管理事务 在save之前写beginTranscaction 后面写commit 就有数据 所以我觉得应该是事务管理上的错误)
不知道哪里错了啊, 配置文件看了很多遍application.xml-----------------------------------------------------------------------------------------------<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"><bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut
expression="execution(public void dao.impl.*.*(..))" id="exp1" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="exp1" />
</aop:config>
<!--事务管理配置结束 -->
  <bean id="buildingDAO" class="dao.impl.TbBuildingDAOImpl">
  <property name="sessionFactory" ref="sessionFactory" />
  </bean>
  <bean id="BuildingAction" class="actions.BuildingAction">
  </bean></beans>
-----------------------------------------------------------------------------------------------实体类 TbBuilding.hbm.xml<hibernate-mapping>
<class name="pojos.TbBuilding" table="tb_building">
<id name="buildid">
<generator class="native" />
</id>
<property name="buildname" length="20" not-null="true" />
<property name="startTime" />
<property name="endTime" />
<property name="bugMsg" />
<property name="buildArea" />
</class>
</hibernate-mapping>-----------------------------------------------------------------------------------------------------
最后是用于测试的方法:public void testAdd() {
ClassPathXmlApplicationContext c = new ClassPathXmlApplicationContext(
"applicationContext.xml");
TbBuildingDAO dao = (TbBuildingDAO) c.getBean("buildingDAO");
TbBuilding bud=new TbBuilding();
bud.setBuildname("ss");
dao.add(bud);
}--------------------------------------------------------------------------------
生成的表create table tb_building (buildid number(10,0) not null, buildname varchar2(20 char) not null, startTime timestamp, endTime timestamp, bugMsg varchar2(255 char), buildArea float, primary key (buildid))
create sequence hibernate_sequence

解决方案 »

  1.   

    spring2.5<?xml version="1.0" encoding="UTF-8"?>
    <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">    <context:annotation-config />
        <context:component-scan base-package="com.bluesky" />    <bean id="sessionFactory"  
                class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
            <property name="configLocation" value="classpath:hibernate.cfg.xml" />  
            <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
        </bean>      <!-- 定义事务管理器(声明式的事务) -->  
        <bean id="transactionManager"
            class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory" />
        </bean>    <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="*" propagation="REQUIRED" />
            </tx:attributes>
        </tx:advice>
        
        <aop:config>
            <aop:pointcut id="interceptorPointCuts"
                expression="execution(* com.bluesky.spring.dao.*.*(..))" />
            <aop:advisor advice-ref="txAdvice"
                pointcut-ref="interceptorPointCuts" />        
        </aop:config>      
    </beans>
      

  2.   

    sessioFactory中加入dataSource数据源配置看看。。我在没看到你这有啊?
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource">
    <ref bean="dataSource" />
    </property>        //其他相关配置
    </bean>
      

  3.   

    你的dao接口呢???你这个事务管理有问题吧???
      

  4.   

    [Quote=引用 3 楼 magicluo 的回复:]sessioFactory中加入dataSource数据源配置看看。。我在没看到你这有啊?
    XML code
    <bean id="sessionFactory"
            class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">    <property name="dataSource">
      ……可是我的数据源配置都在hibernate.cfg.xml 中啊
      

  5.   


    DAO接口在这里
    public interface TbStuDAO {
    public static final String STUNAME = "stuname";
    public abstract void save(TbStu transientInstance);}会和接口有关系?
      

  6.   

    我知道了public Session getSession() {
    return sf.getCurrentSession();
    }  不能直接openSession