2017-05-11 4 views
0

Mein Code, wirklich, wirklich vereinfacht wie folgt aussieht:Spring Data JPA Transaktion Ausgabe

@Entity 
public class Item { 

    @Id 
    @GeneratedValue 
    @Column(name = "ID") 
    private int id; 

    @Pattern(regexp="^[a-zA-Z0-9.\\s]+$", message="only letters, numbers, spaces and {.!}!") 
    private String name; 

    // getter, setter 
} 

Mein JPA Repository:

public interface ItemJpaRepository extends JpaRepository<Item, Integer>{} 

Mein Service:

@Service 
@Transactional 
public class ItemService { 

    @Autowired 
    ItemDAO itemDAO; 

    @Autowired 
    ItemJpaRepository itemJpaRepository; 

    public void saveOrUpdateItem(){ 
     itemDAO.saveOrUpdateItem(); //working 
     itemJpaRepository.save(entity) //not working 
    } 

    public void findAllItems(){ 
     System.out.println(itemJpaRepository.findAll()); 
    } 
} 

Beans, die verwendet für die Datenbankverbindung sind wie folgt deklariert:

@Bean 
public DataSource getDataSource() { 
    BasicDataSource dataSource = new BasicDataSource(); 
    dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 
    dataSource.setUrl("jdbc:mysql://localhost:3306/shoppingcartspringmvcspringdatahibernate"); 
    dataSource.setUsername("root"); 
    dataSource.setPassword("Scholl1313."); 
    //dataSource.setValidationQuery("select 1"); 

    return dataSource; 
} 

@Bean(name = "sessionFactory") 
public SessionFactory getSessionFactory() { 

    LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(getDataSource()); 
    sessionBuilder.scanPackages("com.zdranganele.models"); 
    sessionBuilder.setProperty("hibernate.show_sql", "true"); 
    sessionBuilder.setProperty("hibernate.hbm2ddl.auto", "create"); 
    sessionBuilder.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect"); 
    return sessionBuilder.buildSessionFactory(); 
} 

@Bean(name = "transactionManager") 
public HibernateTransactionManager getTransactionManager() { 

    HibernateTransactionManager transactionManager = new HibernateTransactionManager(getSessionFactory()); 
    return transactionManager; 
} 

@Bean 
public LocalContainerEntityManagerFactoryBean entityManagerFactory() { 
    LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean(); 
    entityManagerFactoryBean.setDataSource(getDataSource()); 
    entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class); 
    entityManagerFactoryBean.setPackagesToScan("com.zdranganele.models"); 

    return entityManagerFactoryBean; 
} 

ItemDao ist ein klassisches DAO. Speichern durch ItemDao funktioniert, sparen durch ItemJpaRepository nicht. Auch zum Löschen. Finden Sie nur Arbeiten an ItemJpaRepository. Es wird kein Fehler ausgegeben, daher denke ich, dass die Transaktion niemals ausgeführt wird.

+0

Ein Problem, weil .... was? – Antoniossss

+0

@Antoniossss Speichern speichert die Entität nicht in der Datenbank. Durch das Löschen wird auch keine Entität aus der Datenbank gelöscht. Ich kann nur Objekte mit findOne() oder findAll() aus der Datenbank holen –

Antwort