如果您在EJB中,请在SessionContext上调用setRollbackOnly()。
你可以像这样注入SessionContext:
public MyClass {
@Resource
private SessionContext sessionContext;
@Transactional(propagation = Propagation.REQUIRED,
isolation = Isolation.DEFAULT,
readOnly = false)
public int saveAll(){
//do stuff;
if(oops == true) {
sessionContext.setRollbackOnly();
return;
}
}
setRollbackOnly()是EJBContext的成员。 SessionContext扩展EJBContext:
http://java.sun.com/j2ee/1.4/docs/api/javax/ejb/SessionContext.html注意它只在会话EJB中可用。
@Resource是一个标准的Java EE注释,所以你应该在Eclipse中检查你的设置。这是一个example,如何使用@Resource注入SessionContext。
我怀疑这可能不是您的解决方案,因为您似乎可能不会使用EJB – 解释为什么Eclipse没有找到@Resource。
如果是这样,那么您需要直接与事务交互 – 请参阅事务模板。