uiiooo 2017-07-17 14:06 采纳率: 33.3%
浏览 1261
已结题

hibernate Spring save指令无法保存

使用了save指令 但是控制台没有输出insert语句 也没有报错 没有保存数据

public class Payroll{



    @Id
    @GeneratedValue
    private long pid;

    private long sid;
    //结账日期
    private Timestamp date;
    //累结
    private double totalSum;
    //结余
    private double balance;
    //伙食费用
    private double boardWages;
    //扣款
    private double deduct;
    //欠款
    private double debt;
    ///预支
     private double advance;
    //薪水细则
     @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)  
     @JoinColumn(name="pid")
    private List<PayrollRow> payrollRow = new ArrayList<PayrollRow>();
    //省略GETTER SETTER
    }

 @Entity
public class PayrollRow {



    @Id
    @GeneratedValue
    private long prid;
    private String style_number;
    private String process;
    private int count;
    private double cost;
    private double amount;
    //
    }

DAO层

 @Repository
public class PayrollDAOImpl implements PayrollDAO{

    @Autowired SessionFactory sessionFactory;
    public boolean save(Payroll p) {
        // TODO Auto-generated method stub
        try {
            System.out.println("info"+sessionFactory.getCurrentSession().save(p));

        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
            return false;
        }

        return true;
    }


    public boolean saveRow(PayrollRow pr){
        // TODO Auto-generated method stub
        try {
            System.out.println("info"+sessionFactory.getCurrentSession().save(pr));

        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
            return false;
        }

        return true;
    }


}

service层

 @Service
@Transactional
public class PayrollServiceImpl implements PayrollService {

    @Autowired
    PayrollDAOImpl payrollDAO ;

    public boolean save(Payroll payroll){
        List<PayrollRow> pwl = payroll.getPayrollRow();
        for (int i = 0;i<pwl.size();i++) {
            payrollDAO.saveRow(pwl.get(i));
            System.out.println("info "+i);
        }
        return payrollDAO.save(payroll);
    }


}

配置文件

  <!-- 支持注解 -->
    <mvc:annotation-driven />

    <!--自动装配DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->
    <mvc:default-servlet-handler />


    <!-- 设置自动扫描的路径,用于自动注入bean   这里的路径与自己的项目目录对应--> 
    <!-- 扫描controller路由控制器  -->  
    <context:component-scan base-package="pres.uiiooo.controller" />  
    <context:component-scan base-package="pres.uiiooo.daoimpl,pres.uiiooo.serviceimpl" />  



    <!-- 视图解析器 -->
        <bean id="viewResolver"  
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="suffix" value=".jsp" />            <!-- 视图文件类型 -->
        <property name="prefix" value="/WEB-INF/views/" />  <!-- 视图文件的文件夹路径 -->
    </bean>
    </beans>

     <!-- JNDI(通过Tomcat)方式配置数据源 -->  
    <!-- <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="${jndiName}"></property> </bean> -->  


       <!-- 引入属性文件 -->  
    <context:property-placeholder location="classpath:config.properties" />  


    <!-- 配置数据源  这里class可以使用不同的驱动-->  
    <bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
     <property name="driverClassName" value="${jdbc_driverClassName}" />  
        <property name="url" value="${jdbc_url}" />  
        <property name="username" value="${jdbc_username}" />  
        <property name="password" value="${jdbc_password}" />
    </bean>  


    <!-- 配置hibernate session工厂 -->  
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">  

        <property name="dataSource" ref="dataSource" />  
        <property name="hibernateProperties">  
            <props>  
                <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>  
                <prop key="hibernate.dialect">${hibernate.dialect}</prop>  
                <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>  
                <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>  
                 <prop key="current_session_context_class">thread</prop>    
            </props>  
        </property>  

        <!-- 自动扫描注解方式配置的hibernate类文件 -->  
        <property name="packagesToScan">  
            <list>  
             <!-- 此处与entity实体路径对应 -->  
                <value>pres.uiiooo.model</value>  
            </list>  
        </property>  
    </bean>  



    <!-- 配置事务管理器 -->  
    <bean name="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">  
        <property name="sessionFactory" ref="sessionFactory"></property>  
    </bean>    


    <!-- 注解方式配置事物 -->  
    <tx:annotation-driven  transaction-manager="transactionManager" />   



</beans>  

其他的DAO层save是可用的 但是这个不行 应该是涉及到事务管理配置 还有一对多配置方面的问题 求大佬解决 谢谢谢谢了!!!

  • 写回答

1条回答 默认 最新

  • LawsonJin 2017-07-18 03:11
    关注

    一对多关系写错了,首先Payroll这个是一方,没有targetEntity 和mapedby配置。另外也不需要写@joinColumn
    PayrollRow 没配置@ManyToOne,还要在此表维护关系。

    评论

报告相同问题?

悬赏问题

  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥20 为什么我写出来的绘图程序是这样的,有没有lao哥改一下
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥200 关于#c++#的问题,请各位专家解答!网站的邀请码
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号