Java 持久化对象时没有可用的事务性EntityManager

Java 持久化对象时没有可用的事务性EntityManager,java,spring,jpa,persistent,Java,Spring,Jpa,Persistent,当我试图持久化一个对象时,没有可用的事务EntityManager异常 我有一个具有以下配置类的Spring项目: @Configuration @ComponentScan @EnableTransactionManagement @EnableJpaRepositories public class SpringConfiguration { @Bean(name = "entityManagerFactory") public LocalContainerEntityManagerFact

当我试图持久化一个对象时,没有可用的事务EntityManager异常

我有一个具有以下配置类的Spring项目:

@Configuration
@ComponentScan
@EnableTransactionManagement
@EnableJpaRepositories
public class SpringConfiguration {
@Bean(name = "entityManagerFactory")
public LocalContainerEntityManagerFactoryBean emf(DataSource dataSource) {
    LocalContainerEntityManagerFactoryBean emf =new LocalContainerEntityManagerFactoryBean();
    emf.setDataSource(dataSource);
    Properties jpaProperties = new Properties();
    jpaProperties.put("hibernate.hbm2ddl.auto", "create-drop");
    jpaProperties.put("hibernate.show_sql", "true");
    emf.setJpaProperties(jpaProperties);
    emf.setPackagesToScan(
        new String[] {"ds.core.entity"});
    emf.setJpaVendorAdapter(
        new HibernateJpaVendorAdapter());
    return emf;
}
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager(EntityManagerFactory emf,DataSource dataSource) {
    JpaTransactionManager tm = 
        new JpaTransactionManager();
        tm.setEntityManagerFactory(emf);
        tm.setDataSource(dataSource);
    return tm;
}
和实体类:

@Entity
public class Type {
@Id @GeneratedValue
private Long id;
private String name;
}
和Jpa实现类:

@Repository
public class JpaTypeRepo implements TypeRepo {
@PersistenceContext
private EntityManager em;
@Override
public Type insertRecord(Type data) {
    em.persist(data);
    return data;
}
}
最后是一个带有
Init()
的服务类:


只需将@Transactional注释添加到类:JpaTypeRepo 详情如下:

@Transactional
@Repository
public class JpaTypeRepo implements TypeRepo {
  @PersistenceContext
  private EntityManager em;
  @Override
  public Type insertRecord(Type data) {
    em.persist(data);
    return data;
  }
}
@Transactional
@Repository
public class JpaTypeRepo implements TypeRepo {
  @PersistenceContext
  private EntityManager em;
  @Override
  public Type insertRecord(Type data) {
    em.persist(data);
    return data;
  }
}