【问题标题】:How to fetch details using criteria query in hibernate如何在休眠中使用条件查询获取详细信息
【发布时间】:2019-05-19 23:09:49
【问题描述】:

我们有两个表studentmark。我们可以在普通的select 查询中使用studentid 连接这些表:

select * from student st,mark mk where st.studentId=mk.studentId

如何创建条件查询来获取详细信息?

Student 的实体类是:

 @Entity
    @Table(name = "student")
    public class Student{
    private int studentId;
    private String name;

      @Column(name = "studentId")
      public int getStudentId() {
        return studentId;
      }

      public void setStudentId(String studentId) {
        this.studentId = studentId;
      }

      @Column(name = "name")
      public String getName() {
        return name;
      }

      public void setName(String name) {
        this.name = name;
      }
    } 

Mark 的实体类是:

@Entity
@Table(name = "mark")
public class Mark{
private int markId;
private int studentId;
private String name;
private String mark

  @Column(name = "markId")
  public int getMarkId() {
    return markId;
  }

  public void setMarkId(String markId) {
    this.markId = markId;
  }

  @Column(name = "studentId")
  public int getStudentId() {
    return studentId;
  }

  public void setStudentId(String studentId) {
    this.studentId = studentId;
  }

  @Column(name = "markId")
  public int getMarkId() {
    return markId;
  }

  public void setMarkId(String markId) {
    this.markId = markId;
  }

  @Column(name = "name")
  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

 @Column(name = "mark")
  public String getMark() {
    return mark;
  }

  public void setMark(String mark) {
    this.mark = mark;
  }
}

【问题讨论】:

  • 不应该使用@OneToMany 将标记映射为学生中的列表吗?此外,应使用 @ManytoOne 在 Mark 中映射 Student。
  • 你试过的JPA Criteria代码在哪里?

标签: hibernate jpa criteria hibernate-criteria


【解决方案1】:

Hibernate 是一个对象关系映射工具。在 Java 代码中映射对象之间的关系。

    @Entity
    @Table(name = "student")
    public class Student{
    private int studentId;
    private String name;
    private Set<Mark> marks; 

      @Column(name = "studentId")
      public int getStudentId() {
        return studentId;
      }

      public void setStudentId(String studentId) {
        this.studentId = studentId;
      }

      @Column(name = "name")
      public String getName() {
        return name;
      }

      public void setName(String name) {
        this.name = name;
      }

      @OneToMany(mappedBy = "student")
      public Set<Student> getStudents(){
        return students;
      }
    } 

马克:

@Entity
@Table(name = "mark")
public class Mark{
private int markId;
private Student student;
private String name;
private String mark

  @Column(name = "markId")
  public int getMarkId() {
    return markId;
  }

  public void setMarkId(String markId) {
    this.markId = markId;
  }

  @ManyToOne
  @JoinColumn(name = "studentId")
  public Student getStudent() {
    return student;
  }

  public void setStudent(Student student) {
    this.student = student;
  }

  @Column(name = "markId")
  public int getMarkId() {
    return markId;
  }

  public void setMarkId(String markId) {
    this.markId = markId;
  }

  @Column(name = "name")
  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

 @Column(name = "mark")
  public String getMark() {
    return mark;
  }

  public void setMark(String mark) {
    this.mark = mark;
  }
}

【讨论】:

    猜你喜欢
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多