Spring boot управление транзакциями в спящем режиме - PullRequest
0 голосов
/ 13 марта 2019

Я хочу обработать транзакцию на служебном уровне с помощью спящего режима с помощью Springbbot, как показано ниже.Транзакция не принимается.Я не хочу, чтобы транзакция была обработана весенними данными jpa.это должно быть сделано hibernate.что не так с

AppConfig.java

    package com
    import java.util.Properties;
    import javax.sql.DataSource;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
    import org.springframework.boot.autoconfigure.domain.EntityScan;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
    import org.springframework.orm.hibernate5.HibernateTransactionManager;
    import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
    import org.springframework.transaction.annotation.EnableTransactionManagement;

    @Configuration
    @ComponentScan(basePackages = { "com" })
    @EnableJpaRepositories(basePackages = { "com" })
    @EntityScan(basePackages = { "com" })
    @EnableTransactionManagement

    public class AppConfig {
        @Autowired
        DataSource dataSource;

        public DataSource dataSource() {
            return dataSource;
        }

        @Bean
        public LocalSessionFactoryBean sessionFactory() {
            LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
            sessionFactory.setDataSource(dataSource());
            sessionFactory.setPackagesToScan("com");
    Properties hibernateProperties = new Properties();
    hibernateProperties.put("hibernate.dialect", "org.hibernate.dialect.Oracle10gDialect");
    hibernateProperties.put("hibernate.show_sql", true);
    hibernateProperties.put("hibernate.hbm2ddl.auto", "update");
            sessionFactory.setHibernateProperties(hibernateProperties);
            return sessionFactory;
        }

        @Bean
        public HibernateTransactionManager transactionManager() {
            HibernateTransactionManager txManager = new HibernateTransactionManager();
            txManager.setSessionFactory(sessionFactory().getObject());

            return txManager;
        }

    }

Сервисный уровень

    package com.codeatomic.springbootquickstart.topic;

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;

    import org.hibernate.Transaction;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.orm.hibernate5.HibernateTransactionManager;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;

    @Service
    public class TopicService {

        @Autowired
        private TopicRepository dao;

    @Transactional
        public Topic getTopicHibernate() {
            Topic topic=new Topic("spring", "Spring Framework", "Spring framework description.");
            //transactionManager.co
            return dao.saveTopic(topic);
            //int i=1/0;

            //topic=new Topic("java", "Core Java", "Core Java description.");


        //  dao.saveTopic(topic);
            //return dao.getTopic();
        }


    }

Dao Layer

    package com.codeatomic.springbootquickstart.topic;

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    @Component
    public class TopicDao {
        @Autowired
        SessionFactory sessionFactory;

        public Topic  saveTopic(Topic t) {
            t.setId("20");
            Session session = sessionFactory.openSession();
            //t= this.getTopic();
             //Transaction tx;
             //tx = session.beginTransaction();

            session.save(t);
            //tx.commit();

            System.out.println(t);
            return t;

        }

    }

Topic.java

 @Entity
@Table(name="topic")
public class Topic implements Serializable {
private static final long serialVersionUID = 865790868118561501L;
@Id
private String id;
@Column(name="name")
private String name;
@Column(name="description")
private String description;

Пожалуйста, помогите.что не так с кодом выше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...