相关疑难解决方法(0)

带有enum参数的Spring @Query注释

是否可以在@Query注释中使用enum参数?

这是我用来查找用户角色的代码:

Role userRole = roleRepository.findByRole(Roles.USER);
if ( userRole == null ) {
    LOGGER.debug("No role found with role: {}", Roles.USER);
}
Run Code Online (Sandbox Code Playgroud)

它打印出来

No role found with role: ROLE_USER
Run Code Online (Sandbox Code Playgroud)

但如果我试图找到所有角色,这就是我得到的:

for ( Role r : roleRepository.findAll() )
    LOGGER.debug("{}", r);

Role@8a8c0a[roleId=1,role=role_admin,version=0]
Role@1efe9ee[roleId=2,role=role_staff,version=0]
Role@1e70f68[roleId=3,role=role_user,version=0]
Role@a475d1[roleId=4,role=role_guest,version=0]
Run Code Online (Sandbox Code Playgroud)

如您所见,用户角色确实存在.

RoleRepository:

public interface RoleRepository extends JpaRepository<Role, Long> {

    @Query("SELECT r FROM Role r WHERE LOWER(r.role) = LOWER(:role)")
    public Role findByRole(@Param("role") Roles role);

}
Run Code Online (Sandbox Code Playgroud)

角色:

@Entity
@Table(name = "role")
public class Role {

    public enum Roles {

        ADMIN("ROLE_ADMIN"), …
Run Code Online (Sandbox Code Playgroud)

java spring spring-data-jpa

8
推荐指数
2
解决办法
8083
查看次数

标签 统计

java ×1

spring ×1

spring-data-jpa ×1