2013-07-25 55 views
0

我试图将数据插入到使用Spring,Hibernate的,JPA。但是当我尝试将数据插入它不给任何错误,我的分贝。但数据还没有插入。有任何想法吗 ?数据未插入到数据库

我的persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 

    <persistence-unit name="GuestbookPU" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <class>com.sanja.test.myDao.entity.User</class> 


    <properties> 
      <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
      <property name="hibernate.connection.password" value="welcome"/> 
      <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/sanjaya"/> 
      <property name="hibernate.connection.username" value="root"/> 
    </properties> 
    </persistence-unit> 

</persistence> 

bean声明在服务项目(spring_service.xml)在道项目(spring_dao.xml)

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:oxm="http://www.springframework.org/schema/oxm" xmlns:p="http://www.springframework.org/schema/p" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans  
     http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.2.xsd 

"> 
    <context:component-scan base-package="com.sanja.test.myDao" /> 
    <context:annotation-config /> 


</beans> 

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans  
     http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.2.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 

"> 

    <import resource="classpath:spring_dao.xml"/> 
    <bean id="app" class="com.sanja.test.myService.App"/> 
     <bean id="entityManagerFactory" 
     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
     p:persistenceUnitName="GuestbookPU"/> 

</beans> 

bean声明我实体

@Entity 
public class User { 

@Id 
@GeneratedValue(strategy=GenerationType.AUTO) 
Long id; 
String name; 


public Long getId() { 
    return id; 
} 
public void setId(Long id) { 
    this.id = id; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 

} 

我的测试类

public class App 
{ 
    @Autowired 
    UserDao userDao; 

    public static void main(String[] args) 
    { 
     ApplicationContext context = new ClassPathXmlApplicationContext("spring_service.xml"); 
     App app=(App)context.getBean("app"); 
     app.addUser(); 
    } 

    @Transactional(propagation = Propagation.SUPPORTS) 
    public void addUser(){ 

     User user=new User(); 
     user.setName("Sanja ela"); 
     userDao.save(user); 
      System.out.println("elane"); 

    } 
} 

吾道逻辑

@Repository("userDao") 
public class UserDaoImpl implements UserDao { 

    @PersistenceContext 
    EntityManager entityManager; 

    public User save(User user){ 

     entityManager.persist(user); 
     return user; 

    } 


} 

我张贴的每一个代码。

+0

在哪一类,你写的数据库插入查询? –

+0

@IrenPatel我更新的代码now.At底部在我的岗位 –

+0

@SanjayaLiyanage在您的测试类添加'@TransactionConfiguration(defaultRollback = FALSE)',看看你是否能够坚持记录数据库。 – user75ponic

回答

2

您正在使用Propagation.SUPPORTS。如果交易不存在,则该操作将不是交易(参见javadoc for Propagation.SUPPORTS)。

支持当前事务,如果不存在,则以非事务方式执行。

试试用Propagation.REQUIREDjavadoc for Propagation.REQUIRED);

支持当前事务,创建如果不存在一个新的。

+0

我用Propagation.REQUIRED以及。但没有进展:(无论如何感谢这个想法 –

+1

不要忘了你的上下文配置中的' – BitExodus

+0

@EG谢谢朋友,我添加了它并解决了这个问题但是,给我一些其他的问题,无论如何,这是我的upvote为您的答案 –

0

难道是这条线吗? @Transactional(传播= Propagation.SUPPORTS)

我们有时不得不与它的问题。根据数据库配置,有时它不会提交。 它说,在the doc

支持当前事务,执行非事务,如果没有 存在

因此,也许你需要到另一个事务呼叫内把它包起来,或将其更改为另一种类型的,必需例如。

+0

我使用了Propagation.REQUIRED。但没有进展:(,感谢无论如何这个想法 –