1 首先该SLSB事物设置为require_new.@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRED_NEW)
2 再次该方法对外接口设置为1条的更新操作。
public void save(Entity entities) {
        getEntityManager().persist(entity);
}或者
SLSB事物@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRED)
saveOne方法会在新创建的事务中执行@TransactionAttribute(TransactionAttributeType.REQUIRED_NEW)
private void saveOne(Entity entities) {
        getEntityManager().persist(entity);
}
save使用默认的require事务public void save(ArrayList<Entity> entities) {
    for (Entity entity : entities) {
       saveOne(entity);
    }
}
保证一条的更新操作是在新的一个事务。

解决方案 »

  1.   

    我的代码如下,但是还是不行@TransactionAttribute(TransactionAttributeType.REQUIRED)
    public class EntityServiceBean implements EntityService {
    @PersistenceContext(unitName = "mes.platform")
    private EntityManager entityManager; public EntityManager getEntityManager() {
    return this.entityManager;
    } void setEntityManager(EntityManager entityManager) {
    this.entityManager = entityManager;
    } @Override
    public void saveList(ArrayList<Entity> entities) {
    for (Entity entity : entities) {
    save(entity);
    }
    } @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
    private void save(Entity entity) {
    entityManager.persist(entity);
    }
      

  2.   

    我看楼主学东西有点机械了,直接捕捉一下异常(persist方法处)可以做到,或者每一条数据保存都做一个事务控制也可以