我有一个包含用户信息(包括密码字段)的类。当用户登录时,它将返回类中的所有内容,包括密码。除了密码或仅保留在数据库中的任何重要数据之外,如何不返回类里面的所有内容。
我尝试使用 map ,这也返回我想要的方式,但我希望是否有比 map 更简单或更快的东西。
很少有答案建议使用 JsonIgnore 和 transient 。如果我使用这两种方法,我将无法登录。因为我需要找回密码才能登录。
我的 POJO 类
@Entity
public class Users {
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "firstname")
private String firstName;
@Column(name = "lastname")
private String lastName;
@Id
@Column(name = "username")
private String username;
@Column(name = "email")
private String email;
@Column(name = "role")
private String role;
@Column(name = "password")
private String password;
repo 类
public interface UsersRepository extends CrudRepository<Users,
String> {
public Users findByUsername(String username);
}
这是 Rest Api
@GetMapping("/users/{username}")
public Map<String, Object> usersCheck(@PathVariable String
username) {
Map<String, Object> addUser = new HashMap<>();
Users user = userRepo.findByUsername(username);
addUser.put("email", user.getEmail());
addUser.put("firstName",user.getFirstName());
"
"
return addUser;
}
还有比Map更好的方法吗?任何建议都会有帮助。
最佳答案
其实有一个way在jpa查询中仅返回特定字段,以便您可以在获取结果时直接使用。
但如果您不想干扰 findByUsername 方法,只需创建 User 类的对象并仅设置所需的字段即可。
您目前使用的方法也是可行的解决方案。
关于java - 如何使用 Spring Boot 从类中仅返回几种类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57797620/