gpt4 book ai didi

Java 存储库 - Spring Data JPA

转载 作者:行者123 更新时间:2023-12-02 02:48:56 26 4
gpt4 key购买 nike

我在 Spring 做一个虚拟项目来记住旧技能。我已经实现了以下存储库。

用户存储库

@Repository
public interface UserRepository extends JpaRepository<User, Long> {

User findByUuid(String uuid);

User findByEmail(String email);

@Override
List<User> findAll();
}

用户实体,带有 getter 和 setter,为了清晰起见,已将其删除

@NamedQueries({
@NamedQuery(name = "User.findByEmail", query = "SELECT u FROM User u WHERE u.email = :email")})
public class User implements Serializable {

private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(nullable = false)
private Long id;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 64)
@Column(nullable = false, length = 64)
private String uuid;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 128)
@Column(nullable = false, length = 128)
private String username;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 128)
@Column(nullable = false, length = 128)
private String email;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 64)
@Column(nullable = false, length = 64)
private String password;
}

运行项目并使用查询findByEmail后,我收到以下错误:

java.lang.IllegalArgumentException: Parameter with that position [1] did not exist

因此,我为我的问题寻找了一些可能的解决方案,并且实际上找到了一个。将查询替换为:

User findByEmail(@Param("email") String email);

这不是我第一次尝试 Spring,我已经使用这个框架开发了一些小项目,并且我使用了正常的方法,没有任何问题。我已阅读文档试图找到对此的解释,但我没有找到任何解释。

  • 有人可以向我解释为什么我的第一次尝试没有成功吗?

最佳答案

请参阅以下 jira 票证 DATAJPA-733

来自奥利弗·吉尔克

You can only use named parameters in your query if you either use Java 8 with -parameters enabled for compilation or use @Param annotations on the query method arguments as documented in the reference documentation.The reason for the required annotation is that prior to Java 8 there was no way to retain the variable names in the code for interface methods.

提供的解决方法是删除命名查询

关于Java 存储库 - Spring Data JPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44123520/

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