我已经将我的应用程序更新到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;
}
}
型
是否有需要激活的属性?
1条答案
按热度按时间9cbw7uwe1#
似乎当我们在jpql select方法中使用构造函数表达式时,spring无法验证您的构造函数是否在启动时定义良好。
Spring当然会在启动时验证所有查询,但它只检查SQL语法,实体的正确名称及其属性。因此不会检查constructor expressions。令人放心的是,在运行时,如果在
getUserLoginView()
调用中没有为UserView
类找到正确的构造函数,则会因缺少构造函数(IllegalStateException
)而引发异常。我认为没有必要为此激活一些东西。单元测试将能够检查你的方法是否在这个级别上定义得很好。