gpt4 book ai didi

java - Spring @DataJpaTest 抛出未知实体异常

转载 作者:行者123 更新时间:2023-11-28 21:07:15 24 4
gpt4 key购买 nike

我正在尝试使用 Spring @DataJpaTest 注释创建存储库测试。即使是简单的演示项目,我也会收到 IllegalArgumentException: Unknown entity。我错过了什么吗?

我正在使用 Baeldung 示例对 Spring 进行测试。有一个简单的 @DataJpaTest,我将它应用到我的代码中。运行测试时,我收到一个 IllegalArgumentException: Unknown entity 异常,无法找到存储库本身。因此,我创建了一个包含最少必需类的演示项目,但仍然出现此错误。

实体类:

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class DemoEntity {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

private String name;

// getter and setter
}

存储库类:

@Repository
public interface DemoRepository extends JpaRepository<DemoEntity, Long> {

Optional<DemoEntity> findByName(String name);
}

和测试类:

@RunWith(SpringRunner.class)
@DataJpaTest
public class DemoRepositoryTest {

@Autowired
private TestEntityManager entityManager;

@Autowired
private DemoRepository repository;

@Test
public void test() {
DemoEntity demo = new DemoEntity() {{
setName("Tim");
}};

entityManager.persistAndFlush(demo);

Optional<DemoEntity> result = repository.findByName("Tim");

assertThat(result.isPresent()).isTrue();
}
}

此测试导致异常:

java.lang.IllegalArgumentException: Unknown entity: com.example.demo.repositories.DemoRepositoryTest$1

at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:804)
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:785)
at org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager.persist(TestEntityManager.java:93)
at org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager.persistAndFlush(TestEntityManager.java:131)
at com.example.demo.repositories.DemoRepositoryTest.test(DemoRepositoryTest.java:31)

我正在使用 Spring Boot Starter 2.1.1 和 Java 10。

最佳答案

问题是由于您创建 DemoEntity 实例的方式造成的:

DemoEntity demo = new DemoEntity() {{
setName("Tim");
}};

不要使用双括号初始化语法,它应该可以正常工作。

您正在以这种方式创建 DemoEntity 的子类。这也是错误消息最后用 $1 指示的内容

参见 https://stackoverflow.com/a/27521360/40064有关为什么这是一个坏主意的更多信息。

关于java - Spring @DataJpaTest 抛出未知实体异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54010233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com