java - 使用 CrudRepository 检索多行

标签 java spring hibernate rest

我有以下查询结果 select * from student where courseName = 'Science';

结果:

student_id | name   | points | course_name   | course_id |
+----------+--------+--------+---------------+-----------+
       1107| Matt   |   3000 |     Science  |    10     |
|      1108| Charley|  12348 |     Science       |    20     |

2 rows in set, 2 warnings (0.00 sec)

实现 CrudReposity 的 Java 接口(interface):

public interface StudentDetailsRepository extends CrudRepository<StudentDetails, Long> {

  List<StudentDetails> findByCourseName(String courseName);
  List<StudentDetails> findAll();
}

实现:

public class StudentController {

  @Autowired
  StudentDetailsRepository studentDetailsRepository;
.............

    List<StudentDetails> studentDetails =
        studentDetailsRepository.findByCourseName(
            Request.getCourseName());
    for (int i = 0; i < studentDetails.size(); i++) {
      logger.info("entries: " + studentDetails.get(i).getName());
    }

    return request;
  }
}

在上面的代码中,我得到了结果

entries: Matt, entries : Matt

StudentsDetails.java:

import org.springframework.data.jpa.domain.AbstractPersistable;
import javax.persistence.Entity;

@Entity(name = "com.StudentDetails")
public class StudentDetails extends AbstractPersistable<Long> {

  private long studentId;
  private String name;
  private long points;
  private String courseName;
  private long courseId;

  public StudentDetails() {

  }

  public StudentDetails(long studentId, String name, long points, String courseName, long courseId) {
    this.studentId = studentId;
    this.name = name;
    this.points = points;
    this.courseName = courseName;
    this.courseId = courseId;
  }

  public long getStudentId() {
    return studentId;
  }

  public String getName() {
    return name;
  }

  public long getPoints() {
    return points;
  }

  public String getCourseName() {
    return courseName;
  }

  public long getCourseId() {
    return courseId;
  }
}

真正的问题是,它显示大小为 2,但只占用显示两次的第一行。不拿第二个。请帮助我使用 CrudRepository 从数据库表中获取相应的多行。

最佳答案

StudentsDetails.java 应该有一个标识符。 在studentId上添加@javax.persistence.Id;

@Id private long studentId;

还有 List<StudentDetails> findByCourseId(String courseId); 应该 List<StudentDetails> findByCourseId(Long courseId);

关于java - 使用 CrudRepository 检索多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45720889/

相关文章:

java - 运行 Hibernate 时出现 XML 解析错误

java - 让 JCheckbox 变大..?

java - plovr 构建工具可以使用外部闭包编译器吗?

java - JPanel/JFrame 自动调整大小。 java

java - Android 选项卡,如何显示所选选项卡的图像

java - 使用 Java 容器配置的 Spring 依赖注入(inject)

java - 如何在单元测试中模拟 JPA 存储库的保存方法

Spring Batch/Azure 存储帐户 blob 资源 [container"foo", blob ='bar' ] 无法解析为绝对文件路径

java - 如何在 JPA( hibernate )中将持久性单元标记为默认值?

java - 如何在 Java 中设置默认时区并控制日期在数据库中的存储方式?