首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法运行existByProperty:“找不到类型为学生的属性学生!”

无法运行existByProperty:“找不到类型为学生的属性学生!”
EN

Stack Overflow用户
提问于 2020-04-06 21:29:17
回答 2查看 44关注 0票数 0

我正在试着写一个"existsBy“查询,但是不能让它工作。我知道JpaRepository中有一个existByID,但我需要通过属性student_id进行检查。我尝试过无数种写函数名的方法,但我似乎不能把它写对。

代码语言:javascript
运行
复制
public class Student implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    private long student_id;

+other fields and getters and setters...
代码语言:javascript
运行
复制
@Repository
public interface StudentRepository extends JpaRepository<Student, Long> {
    boolean existsByStudentid(Long student_id);
}

错误:

代码语言:javascript
运行
复制
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property student found for type Student!
EN

回答 2

Stack Overflow用户

发布于 2020-04-06 22:36:33

Spring Data使用下划线作为保留字符。我认为这样使用是不可能的。我认为没有其他选项可以重命名该变量。

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-property-expressions

因此,该字段的命名必须遵循以下约定

代码语言:javascript
运行
复制
private long studentId;

(下划线可用于遍历嵌套属性:要解决此歧义,可以在方法名中使用_来手动定义遍历点。)

票数 3
EN

Stack Overflow用户

发布于 2020-04-06 21:34:12

您的属性名称为student_id

因此查询方法应该是

代码语言:javascript
运行
复制
@Repository
public interface StudentRepository extends JpaRepository<Student, Long> {
    boolean existsByStudent_id(Long student_id);
}

Btw:_ in属性名称在Java expect for constants中不是推荐的样式

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61060970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档