spring - 在弹簧靴中找不到类型 .. 的属性 ..
问题描述
我是spring的初学者,我有这个小问题。“找不到 CourseTestCompleteField 类型的属性 questionId!” 我有 2 个通过一对一连接连接的模型类。那2个模型类是:
package com.example.springboot.models;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
@Entity
@Table(name = "questions")
public class CourseTestQuestion {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="question_id")
private Long id;
@NotBlank
@Column(name = "question_course")
private String questionCourse;
@NotBlank
@Column(name = "question_type")
private String questionType;
public CourseTestQuestion(){
}
public CourseTestQuestion(String questionCourse, String questionType) {
this.questionCourse = questionCourse;
this.questionType = questionType;
}
// public getters and setters for all fields here
}
和:
package com.example.springboot.models;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
@Entity
@Table(name = "quiz_complete_field_questions",
uniqueConstraints = {
@UniqueConstraint(columnNames = "question_id")
}
)
public class CourseTestCompleteField {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
@Column(name = "question_content")
private String questionContent;
@NotBlank
@Column(name = "answer")
private String answer;
@NotBlank
@Column(name = "points")
private String points;
@NotBlank
@Column(name = "course")
private String course;
@NotBlank
@Column(name = "teacher_username")
private String teacher;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "question_id", referencedColumnName = "question_id")
private CourseTestQuestion courseTestQuestion;
public CourseTestCompleteField(){
}
public CourseTestCompleteField(CourseTestQuestion courseTestQuestion, String question, String answer, String points, String course, String teacher) {
this.courseTestQuestion = courseTestQuestion;
this.questionContent = question;
this.answer = answer;
this.points = points;
this.course = course;
this.teacher = teacher;
}
// public getters and setters for all fields here
}
我对两者的回购:
package com.example.springboot.repository;
import com.example.springboot.models.Course;
import com.example.springboot.models.CourseTestQuestion;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.Optional;
@Repository
public interface CourseTestQuestionRepository extends JpaRepository<CourseTestQuestion, Long> {
Optional<CourseTestQuestion> findById(Long id);
Optional<CourseTestQuestion> findByQuestionCourse(String questionCourse);
}
和:
package com.example.springboot.repository;
import com.example.springboot.models.CourseTestCompleteField;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Optional;
@Repository
public interface CourseTestCompleteFieldRepository extends JpaRepository<CourseTestCompleteField, Long> {
Optional<CourseTestCompleteField> findById(Long id);
Optional<CourseTestCompleteField> findByQuestionId(Long questionId);
Optional<CourseTestCompleteField> findByCourse(String course);
List<CourseTestCompleteField> findByQuestionContent(String questionContent);
List<CourseTestCompleteField> findByTeacher(String teacher);
Boolean existsByQuestionContent(String questionContent);
}
问题出在Optional<CourseTestCompleteField> findByQuestionId(Long questionId);
但我不明白为什么,因为在数据库中我有带有 question_id 列的 CourseTestCompleteFieldModel 表,而在 CourseTestCompleteField 我有 CourseTestQuestion 对象。但是,CourseTestCompleteField 的表有不同的名称,这可能是一个问题吗?我应该将表重命名为 course_test_complete_field?
有人能帮助我吗?谢谢
解决方案
因为,这是对嵌套对象的查询。您需要像这样更新您的查询。
Optional<CourseTestCompleteField> findByCourseTestQuestion_Id(Long questionId);
即使没有“_”也可以使用
Optional<CourseTestCompleteField> findByCourseTestQuestionId(Long questionId);
但最好在访问嵌套字段时放置“_”以获得更好的可读性。
推荐阅读
- css - ng-select 使用图像 url 更改下拉箭头
- powershell - 比较两个 csv 表并同时写入其中一个
- java - 带有图像(文件)的 Java Spring REST Api
- postgresql - Postgres:在同一列字符串中包含子选择和子选择的派生计算
- php - 在 php/symfony 中取消设置会话数组的有效方法
- dart - 使用 Aqueduct API Dart 在 Heroku 中部署的错误
- android - Android 应用程序(Ionic、React)中没有后端连接,但它在具有相同基本代码的 Web 应用程序中工作
- chart.js - 如何忽略 chart.js 中的标签
- html - Ionic:如何在 Shadow DOM 中更改 span.button-inner 的 CSS
- docker - Pulumi 不执行 Kubernetes Pod 的优雅关闭