也许这是一个难以理解的问题,但我无法理解这个问题: 这是一个简单的代码:
@Service
@Transactional
public class MainClass {
@AutoWired
private NestedService1 ns1;
public void mainMethod(){
ns1.inner();
}
}
@Service
public class NestedService1{
@PersistenceContext
private EntityManager em;
@Transactional(propagation=Propagation.REQUIRES_NEW)
public void inner(){
//here retrieve some data from db with the EM
Object1 obj1 = em.createQuery(query, Object1.class).getSingleResult();
//Why obj1 is null ?
}
}
但 obj1 未正确设置并抛出异常,如果我使用getResultList,则检索到的列表为空。
但是当我从MainClass中删除@Transactional注释时,obj1设置正确并且一切正常。
那么为什么NestedService1类中关联的EM不包含/管理任何数据? 请不要用EJB示例解释,因为我使用的是Spring / JPA,所以没有帮助,