带有弃用警告的休眠查询



我试图用以下代码避免以下警告,但没有成功。有人知道为什么吗。

WARN org.hibernate.hql.internal.ast.HqlSqlWalker - [DEPRECATION] Encountered positional parameter near line 1, column 202 in HQL: [select distinct p.permission from org.imedcom.server.model.Permission as p inner join p.rolePermissions as rp inner join rp.role as r inner join r.userRoles as ur inner join ur.user as u where u.id = ? ].  Positional parameter are considered deprecated; use named parameters or JPA-style positional parameters instead.
@Transactional
UserDetails loadUserByUsername(String s) throws UsernameNotFoundException, DataAccessException {
User user = User.findByUsername(s)
if (!user) {
throw new UsernameNotFoundException('User not found', s)
}

def permissions = Permission.executeQuery(
"select distinct p.permission from Permission as p " +
"inner join p.rolePermissions as rp " +
"inner join rp.role as r " +
"inner join r.userRoles as ur " +
"inner join ur.user as u " +
"where u.id = ? ", user.id)
def authorities = []
permissions.each {
authorities << new GrantedAuthorityImpl(it)
}
return new ImedComleGrailsUserDetails(user.username, user.password, user.enabled,
!user.accountExpired, !user.passwordExpired,
!user.accountLocked, authorities ?: NO_ROLES, user.id)
}

我升级到hibernate 5,grails 3.0.17,spring 3.0.0.M2

以下是帮助我解决此问题的方法:

  • 将休眠降级为休眠4
  • 升级到春季3.1.2

希望这能帮助社区中的某个人。

最新更新