1

Spring Boot JDBC带有Spring Boot:2.2.4.RELEASE,在 gradle dep 中:

 implementation ("org.springframework.boot:spring-boot-starter-data-jdbc")

-data-jpa 的部门(参见“重复问题”)

//implementation ("org.springframework.boot:spring-boot-starter-data-jpa") is commented

仅在从集成测试运行时出现此错误:

    "A constructor parameter name must not be null to be used with Spring Data JDBC!"
 Error creating bean with name 'myRepository': 

我的存储库被定义为这个。一个界面。它不能有构造函数。

public interface MyRepository extends CrudRepository<MyData, UUID> {

它的注入方式是:

@Inject
MyRepository myRepository;

集成测试本身:

@ActiveProfiles("test")
@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = Application.class)
public class MyResourceTest {

它曾经适用于测试中较低的弹簧靴版本。它工作正常。从 IDE 开始测试。它工作正常。当启动应用程序并点击端点时 - 它确实注入了存储库。

问:如何使 Spring DATA JDBC 没有这个“A constructor parameter name must not be null to be used with Spring Data JDBC!” spring 数据 jdbc 存储库的错误?

更新:刚刚检查并仔细检查。

class MyData {
    //@Id Dont use the Id annotation here because I use a mapper when @Query(.. by this object 
    private UUID id;
    private String name;
    private MyData2 mydata2;

    public MyData() {}
    public MyData(String name, MyData2 mydata2) {...}
    .. all getters and setters
}

MyData2是一样的 - 使用默认 + all arg 构造函数。一切都是手工制作的。没有lombok

更新 2:

如果我创建一个文件夹“jdbc”,则将配置类放在那里,@ EnableJdbcRepositories并将我的所有数据 jdbc 存储库“放在一个模块中”。我仍然有同样的例外。IF 从集成测试运行。

4

0 回答 0