[英]In which cases does JpaRepository automatically create the query without you having to use @Query annotation
我正在学习 Spring Boot 中的 Udemy 教程。 有一部分@Query
未用于存储库界面中的用户创建方法。 它的工作原理,但我想知道当JpaRepository需要创建查询的照顾。 在下面的User类中,没有使用@Table
。
findByEmail(String email)
方法无需任何实现/定义即可工作。 所以,我的印象是,JpaRepository 自动创建了Select from User where email = emailargument
所以这就是我所拥有的
带有表User
名为reservation
应用程序属性
spring.datasource.url=jdbc:mysql://localhost:3306/reservation
spring.datasource.username=root
用户.java
import javax.persistence.Entity;
@Entity
public class User extends AbstractEntity{
private String firstName;
private String lastName;
private String email;
private String password;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
用户存储库.java
import org.springframework.data.jpa.repository.JpaRepository;
import com.project.flightreservation.entities.User;
public interface UserRepository extends JpaRepository<User, Long> {
User findByEmail(String email);
}
JPA 具有以不同方式构造查询的能力。 您可以使用从 methodName 派生的查询与谓词IsStartingWith
、 StartingWith
、 StartsWith
、 IsEndingWith
、 EndingWith
、 EndsWith
、 IsNotContaining
、 NotContaining
、 NotContains
、 IsContaining
、 Containing
、 Contains
这些查询的相应参数将被清理。
如果你面对其中或者方法名解析器不支持您要使用或方法的名称会得到不必要的丑关键字的情况下,你可以使用@Query
为namedQuery
支持JPQL
或nativeQuery
。
我强烈建议您阅读此文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.