我们已经设置了这样的Spring框架:
@Eager
public interface CatalogElementRepository extends PagingAndSortingRepository<CatalogElementEntity, Long> {
}
@Service
public class CatalogImpl implements CatalogManager {
@Inject
CatalogElementRepository catalogElementRepository;
@Override
public CatalogElement createCatalogElement(CatalogElementEntity catalogElement) {
return this.catalogElementRepository.save(catalogElement);
}
}
@Stateless
@Remote(CatalogManager.class)
public class CatalogManagerBean implements CatalogManager {
@Inject
CatalogManager delegate;
@Override
public CatalogElement createCatalogElement(CatalogElementEntity catalogElement) {
return this.delegate.createCatalogElement(catalogElement);
}
}
因此,每当有人在远程接口createCatalogElement
上调用该方法时,我都会假设该实体存储在数据库中。它没有(奇怪的是,findOne
仍然返回同一个实体,但它无法通过findByProperty
找到。
Other questions说要添加@Transactional
,所以我在方法和类上添加@javax.transaction.Transactional
和org.springframework.transaction.annotation.Transactional
以确保安全,没有任何效果
可能是什么问题?
我没有看到Spring Framework的任何配置文件,但它是一个遗留项目,所以它们可能只是被隐藏得很好。
答案 0 :(得分:0)
出于某种原因,使用此类作为EntityManager
帮助的生产者:
public class SpringConfig {
@PersistenceUnit
EntityManagerFactory emf;
@PersistenceContext
EntityManager em;
@Produces
@ApplicationScoped
public EntityManagerFactory createEntityManagerFactory() {
return this.emf;
}
@Produces
public EntityManager createEntityManager() {
return this.em;
}
public void close(@Disposes EntityManagerFactory entityManagerFactory) {
entityManagerFactory.close();
}
public void close(@Disposes EntityManager entityManager) {
entityManager.close();
}
}