ezt*_*tam 2 java spring hibernate spring-mvc spring-transactions
我正在尝试在以下方法中运行entityManager.merge(myEntity),但似乎忽略了@Transactional注释.Hibernate配置似乎很好,因为我可以成功地从数据库中获取数据,但是无法写入数据库.我使用的是Spring 3.2.3版.为什么编写db操作不起作用?
我的方法不起作用
package com.reflections.importer.bls;
...
@Service
class BlsGovImporter {
...
@Transactional
private void importSeries(String externalId) {
// This works. The dao is using EntityManager too
Series series = seriesDao.findByExternalId(externalId);
series.getValues().addAll(fetchNewValues());
// This does not work and no exception is thrown
entityManager.merge(series);
}
Run Code Online (Sandbox Code Playgroud)
因为它用于私有方法.Spring Docs:
方法可见性和@Transactional
使用代理时,应仅将@Transactional注释应用于具有公共可见性的方法.如果使用@Transactional注释对带保护的,私有的或包可见的方法进行注释,则不会引发错误,但带注释的方法不会显示已配置的事务设置.如果需要注释非公共方法,请考虑使用AspectJ(见下文).
当它是私有的时,它显然是在同一个类中调用的.但Spring调用需要通过代理才能使其正常工作.因此需要从另一个bean调用该方法.
其他选项是使用@Transactional注释类.
| 归档时间: |
|
| 查看次数: |
3013 次 |
| 最近记录: |