java中事物的注解_java – @Transactional注释不启动事务(Guice Pe...

我正在尝试使用Guice Persist创建一个带有@Transactional注释方法的简单服务类:

public class TestServiceImpl implements TestService {

@Inject

private Provider entityManager;

@Override

@Transactional

public Long createEvent(String name) {

Event event = new Event(name);

System.out.println("Is transaction active? " + entityManager.get().getTransaction().isActive() );

entityManager.get().persist(event);

return event.getId();

}

}

遗憾的是,Guice Persist没有创建任何交易.日志输出可以在这里看到:http://pastebin.com/Mh5BkqSC

请注意第450行的打印:

Is transaction active? false

结果是数据库中没有存储任何内容:

mydb=# \d

List of relations

Schema | Name | Type | Owner

--------+--------------------+----------+----------

public | events | table | postgres

public | hibernate_sequence | sequence | postgres

(2 rows)

mydb=# select * from events;

id | name

----+------

(0 rows)

mydb=#

我按以下方式设置应用程序:

public static void main(String[] args) {

Injector injector = Guice.createInjector(new TestModule(), new JpaPersistModule("postgresPersistenceUnit"));

PersistService persistService = injector.getInstance(PersistService.class);

persistService.start();

TestService serviceToTest = injector.getInstance(TestService.class);

Long id = serviceToTest.createEvent("test");

System.out.println("Id: " + id);

}

正如你所看到的,TestService是由Guice创建的,而我正在使用JpaPersistModule,这应该是@Transactional连接的内容.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值