由于Spring Data JPA,我使用jparepository
,没有使用额外的@bean
、@qualifier(value=“xxx”)
或@configuration
。
现在我开始向一个旧项目添加代码,我看到了使用EntityManager
和@transactional
的类和类型化查询。我认为它们没有必要。
所以我想添加我的新样式的存储库,同时保持旧代码不变,但是这个类及其测试,我看到错误:
nosuchBeanDefinitionException:没有名为“事务管理器”的bean可用:没有为限定符“事务管理器”找到匹配的PlatformTransactionManager bean-限定符和bean名称都不匹配!
存储库:
public interface UserPurchaseRepository extends JpaRepository<UserPurchase, Long> {
/**
* Find the last purchase time of a user.
* @param userId the id of user to search
* @return the last buy time
*/
OffsetDateTime findLastBuyDateByUserId(String userId);
}
@RunWith(SpringRunner.class)
@AutoConfigureTestDatabase
@SpringBootTest
public class UserPurchaseServiceIntegrationTest {
private static final String id = UUID.randomUUID().toString();
private static final String userId = UUID.randomUUID().toString();
private static final OffsetDateTime lastBuyDate = OffsetDateTime.now();
@Autowired
private UserPurchaseRepository repository;
@Before
public void setUp() {
UserPurchase purchase = new UserPurchase();
purchase.setId(id);
purchase.setUserId(userId);
purchase.setLastBuyDate(lastBuyDate);
repository.save(purchase);
}
@After
public void cleanUp() {
repository.deleteAll();
}
@Test
public void testFindLastBuyTimeByUserId() {
// given (setUp())
// when
OffsetDateTime foundLastBuyTime = repository.findLastBuyDateByUserId(userId);
// then
Assert.assertEquals(lastBuyDate, foundLastBuyTime);
}
}
我找到了原因:我们使用了一个名为mitre
的OpenID库,这个依赖项使用EclipseLink作为JPA而不是Hibernate的实现,因此我们不得不在spring-data-jpa
中排除Hibernate。如果我们想要使用JPA-Hibernate,这两者会混淆,@autowired
很容易混淆使用哪个,所以我们只能编写类型化查询来使用这个库。这就是为什么现在是这样。看来我得自己写所有的查询。
根据这里的baeldung 如果我们使用的是Spring Boot项目,并且在类路径上有spring-data-*或spring-tx>依赖项,那么事务管理将通过>default启用。“ serviceConfig.java 哪里出了问题?,我在SpringBoot配置中遗漏了什么? 提前感谢你的帮助
我试图为我的应用程序启用Spring Boot管理服务器。默认设置工作正常,但当我尝试启用安全性时,出现以下错误: 应用程序无法启动 说明: 无法注册在类路径资源[org/springframe/Security/config/注解/web/配置/WebSecurityConfiguration.class]中定义的bean转换服务后处理器。已经在类路径资源[org/springframe/Sec
问题内容: 项目使用Hibernate(JPA),Spring和Maven。我的实体和DAO在单独的JAR中。 pom.xml: 道: } 我有一个使用Spring的模块。 pom.xml: AppContext.xml: 服务: 当我尝试从EntityManager中获取会话时,遇到以下异常: 问题答案: 您必须在方法周围加上@Transactional批注: 并在您的Spring的xml配置文
我正在将我的代码从spring boot 1.5.4迁移到2.0.8。这样做时,实体管理器在jboss上部署时抛出一个错误: 对EntityManager使用@Autowired时: 使用@PersistenceContext时: 我观察到的是,当我使用infinispan embedded的uber jar时,这个问题没有出现在jboss上。我不想使用超级罐子,因为它会带来其他问题。 更新了整个
我试图从注入的EntityManager中打开Hibernate会话,因为我需要使用Hibernate的原生标准API。 当我尝试使用标准时,我得到以下异常: 但是,当我使用EntityManager本身的Query api时,一切都很好。 我的配置: db.xml PouzivatelDAOHibernate 不起作用: PouzivatelDAOHibernate,它确实工作: 编辑:我在JP
问题:原因异常。 代码: