问题: entityManager.unwrap(SessionImplementor.class)
原因no transactional entitymanager available
异常。@PostConstruct中没有交易型实体管理器可用
代码:
@Component
public class HibernateEventWiring {
@Autowired
private ViewListener listener;
@PersistenceContext(unitName = "config-punit")
private EntityManager entityManager;
@PostConstruct
public void registerListeners() {
SessionFactory sessionFactory = getSessionFactory();
EventListenerRegistry registry = ((SessionFactoryImpl) sessionFactory).getServiceRegistry().getService(
EventListenerRegistry.class);
registry.getEventListenerGroup(EventType.PRE_UPDATE).appendListener(listener);
}
@Transactional
private SessionFactory getSessionFactory() {
// EXCEPTION: No transactional entitymanager available
return entityManager.unwrap(SessionImplementor.class).getFactory();
}
}
http://stackoverflow.com/q/14522691/1391249,http://stackoverflow.com/q/3423972/1391249此外,你不应该无意中进口'javax.transaction.Transactional'(Java的EE 7)代替'org.springframework.transaction.annotation.Transactional'。 – Tiny
我假设您使用org.springframework.transaction.annotation.Transactional而不是javax.transaction.Transactional注释。真的吗? –