gpt4 book ai didi

java - Spring Java 配置。交易问题

转载 作者:行者123 更新时间:2023-11-30 02:39:39 26 4
gpt4 key购买 nike

我有一个带有 java 配置的 spring 应用程序:

@Controller
@RequestMapping("/")
public class MainController {

@Inject
@Named("dbDaoService")
IDaoService dbDaoService;

@RequestMapping(value="/saveNoteAsync", method = RequestMethod.POST)
public @ResponseBody String saveNoteAsync(@RequestBody CreateRequest createRequest, HttpServletRequest request) {
Notes newNote = new Notes(
createRequest.getTitle(),
createRequest.getNote(),
tagService.getTagMask(createRequest.getTags())
);

Long newId = dbDaoService.createNotes(newNote);
return ""+newId;
}

}

数据库服务:

@Service("dbDaoService")
public class DBDaoService implements IDaoService {

@PersistenceContext(unitName = "MyEntityManager")
private EntityManager entityManager;

private List<Tags> tags = null;

@Override
@Transactional
public Long createNotes(Notes data) {
entityManager.persist(data);

return data.getId();
}
}

配置类

@Configuration
@EnableWebMvc
@ComponentScan("ru.mypackage")
public class WebConfig extends WebMvcConfigurerAdapter {

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/WEB-INF/views/**").addResourceLocations("/views/");
}

@Bean
public InternalResourceViewResolver getViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
resolver.setViewClass(JstlView.class);

return resolver;
}

@Bean
public BasicDataSource getBasicDataSource(){
BasicDataSource bds = new BasicDataSource();
bds.setDriverClassName("com.mysql.jdbc.Driver");
bds.setUrl("jdbc:mysql://localhost:3306/test");
bds.setUsername("root");
bds.setPassword("root");

return bds;
}

@Bean
public HibernateJpaVendorAdapter getHibernateJpaVendorAdapter(){
HibernateJpaVendorAdapter hjva = new HibernateJpaVendorAdapter();
hjva.setShowSql(true);
hjva.setGenerateDdl(true);
hjva.setDatabasePlatform("org.hibernate.dialect.MySQLDialect");

return hjva;
}

@Bean
public LocalContainerEntityManagerFactoryBean getEntityManagerFactory() {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setPersistenceUnitName("MyEntityManager");
em.setDataSource(getBasicDataSource());
em.setJpaVendorAdapter(getHibernateJpaVendorAdapter());
em.setPackagesToScan("ru.eastwind.persistance");

return em;
}

@Bean
public HibernateJpaDialect getHibernateJpaDialect(){
return new HibernateJpaDialect();
}

@Bean
public JpaTransactionManager getJpaTransactionManager(){
JpaTransactionManager jtm = new JpaTransactionManager();
jtm.setEntityManagerFactory(getEntityManagerFactory().getObject());
jtm.setJpaDialect(getHibernateJpaDialect());

return jtm;
}
}

entityManager.persist(data);行中,我收到错误:

javax.persistence.TransactionRequiredException:没有可用的事务EntityManager

但是所有选择查询都是正确的!请帮忙。

最佳答案

@Configuration类上使用@EnableTransactionManagement

@Configuration
@EnableWebMvc
@ComponentScan("ru.mypackage")
@EnableTransactionManagement
public class WebConfig extends WebMvcConfigurerAdapter {
// ... Your code
}

另请参阅:http://docs.spring.io/spring/docs/3.1.x/javadoc-api/org/springframework/transaction/annotation/EnableTransactionManagement.html

关于java - Spring Java 配置。交易问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42109992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com