【发布时间】:2020-06-25 20:59:12
【问题描述】:
我有两个实体用户和角色
类用户
package com.domain;
import lombok.Data;
import javax.persistence.*;
import java.util.Set;
@Data
@Entity
@Table(name = "usr")
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String fio;
private String password;
@Column(nullable = false, unique = true)
private String username;
@ManyToMany(fetch = FetchType.EAGER)
private Set<Role> roles;
}
类角色
package com.domain;
import lombok.Data;
import javax.persistence.*;
import java.util.Set;
@Data
@Entity
@Table(name = "role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
@Transient
@ManyToMany(mappedBy = "roles")
private Set<Users> users;
}
自动创建了三个表,ok
然后我创建了存储库
package com.repository;
import com.domain.Role;
import com.domain.Users;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.Set;
@Repository
public interface MyUserRepository extends JpaRepository<Users, Long> {
Users findByUsername(String Username);
Set<Role> findRoleByUsername(String Username);
}
并尝试在我的控制器中使用 findRoleByUsername
我的控制器中的方法
@GetMapping( "/role")
public Set<Role> roletestpage() {
Set<Role> myrole = myUserRepository.findRoleByUsername("admin");
return myrole;
}
当我运行我的程序时出现错误
ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [com.domain.Users] to type [com.domain.Role]] with root cause
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [com.domain.Users] to type [com.domain.Role]
我的问题在于 findRoleByUsername 方法。 有人知道,这是什么,我该如何解决这个问题?
【问题讨论】:
-
您不能为多个实体使用同一个存储库,您需要获取用户而不是角色,然后在存储库和控制器之间引入一个服务层,该服务层将为在存储库中获取的用户角色提供服务。
-
Berk Kurkcuoglu,谢谢)
标签: java spring spring-boot jpa