gpt4 book ai didi

java - 我不能在我的代码中使用 findOne() 方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:44:18 28 4
gpt4 key购买 nike

我的应用程序有错误,因为我使用了 findOne() 方法。在我的简单代码下面。在 User 类中,我的 id 是 String email ,这是我试图在我的 UserService 类中使用的 id ,如下所示:

public User findUser(String email){
return userRepository.findOne(email);
}

但是我有这个错误:

method findOne in interface org.springframework.data.repository.query.QueryByExampleExecutor cannot be applied to given types;
required: org.springframework.data.domain.Example
found: java.lang.String
reason: cannot infer type-variable(s) S (argument mismatch; java.lang.String cannot be converted to org.springframework.data.domain.Example)

用户类:

@Entity
@Data
@Table(name = "User")
public class User {
@Id
@Email
@NotEmpty
@Column(unique = true)
private String email;

@NotEmpty
private String name;

@NotEmpty
@Size(min = 5)
private String password;

@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<Task> tasks;

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "USER_ROLE", joinColumns = {
@JoinColumn(name = "USER_EMAIL", referencedColumnName = "email")
}, inverseJoinColumns = {@JoinColumn(name = "ROLE_NAME", referencedColumnName = "name")})
private List<Role> roles;
}

和 UserRepository:

public interface UserRepository extends JpaRepository<User, String> {
}

最佳答案

使用findByIdgetOne而不是 findOne当您只想按 ID 搜索时。

public User findUser(String email){
return userRepository.getOne(email); // throws when not found or
// eventually when accessing one of its properties
// depending on the JPA implementation
}

public User findUser(String email){
Optional<User> optUser = userRepository.findById(email); // returns java8 optional
if (optUser.isPresent()) {
return optUser.get();
} else {
// handle not found, return null or throw
}
}

函数findOne()收到 Example<S> ,该方法用于实例查找,需要提供实例对象和需要查询的字段。

您可以通过示例了解如何使用查找。

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#query-by-example.matchers

但基本上是这样的。

User user = new User();                          
person.setName("Dave");

ExampleMatcher matcher = ExampleMatcher.matching()
.withIgnorePaths("name")
.withIncludeNullValues()
.withStringMatcherEnding();

Example<User> example = Example.of(user, matcher);

关于java - 我不能在我的代码中使用 findOne() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49224010/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com