spring Sping Boot -存储库验证

k2fxgqgv  于 11个月前  发布在  Spring
关注(0)|答案(1)|浏览(129)

我已经将我的应用程序更新到Sping Boot 3。我不是100%确定,但如果我记得正确的话,在Spring在应用程序启动时检查Object的参数是否匹配之前:

@Query("SELECT new test.UserView(u.userName, u.firstName, u.secondName) FROM User u WHERE u.userName = :userName") 
UserView getUserLoginView(@Param("userName") String userName;

字符串
在本例中,字段secondName丢失,但在启动时没有收到错误:

public class UserView {
    private String userName;
    private String firstName;
    
    public UserView(String userName, String firstName) {
        this.userName = userName;
        this.firstName = firstName;
    }
}


是否有需要激活的属性?

9cbw7uwe

9cbw7uwe1#

似乎当我们在jpql select方法中使用构造函数表达式时,spring无法验证您的构造函数是否在启动时定义良好。
Spring当然会在启动时验证所有查询,但它只检查SQL语法,实体的正确名称及其属性。因此不会检查constructor expressions。令人放心的是,在运行时,如果在getUserLoginView()调用中没有为UserView类找到正确的构造函数,则会因缺少构造函数(IllegalStateException)而引发异常。
我认为没有必要为此激活一些东西。单元测试将能够检查你的方法是否在这个级别上定义得很好。

相关问题