使用了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是可用的 但是这个不行 应该是涉及到事务管理配置 还有一对多配置方面的问题 求大佬解决 谢谢谢谢了!!!