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 从集成测试运行。