【问题标题】:create join between two table in spring and hibernate在 spring 和 hibernate 中创建两个表之间的连接
【发布时间】:2016-10-06 01:50:52
【问题描述】:

嘿,我是 Spring 新手,我想在下面提到的两个表 Student Table 之间编写连接查询,其中包含学生信息和 StudentDetail.java

@Entity
@Table(name = "student")
public class StudentDetail {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    @OrderBy("name asc")
    public String name;
    public int age;

    @Column(unique = true)
    public long mobile;

    public String address;

    @Column(unique = true)
    public int doorNo;

    public String motherName;
    public String fatherName;
    public int sibiling;

    @Temporal(TemporalType.DATE)
    public Date joiningDate = new Date();

    @OneToOne(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
    @JoinColumn(name = "accountDetail")
    public Account account;

    public Account getAccount() {
        return account;
    }

    public void setAccount(Account account) {
        this.account = account;
    }

    public Date getJoiningDate() {
        return joiningDate;
    }

    public void setJoiningDate(Date joiningDate) {
        this.joiningDate = joiningDate;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public long getMobile() {
        return mobile;
    }

    public void setMobile(long mobile) {
        this.mobile = mobile;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public int getDoorNo() {
        return doorNo;
    }

    public void setDoorNo(int doorNo) {
        this.doorNo = doorNo;
    }

    public String getMotherName() {
        return motherName;
    }

    public void setMotherName(String motherName) {
        this.motherName = motherName;
    }

    public String getFatherName() {
        return fatherName;
    }

    public void setFatherName(String fatherName) {
        this.fatherName = fatherName;
    }

    public int getSibiling() {
        return sibiling;
    }

    public void setSibiling(int sibiling) {
        this.sibiling = sibiling;
    }
}

Account.java account 表包含学生 ID 和姓名以及学生学分。

@Entity
@Table(name = "account")
public class Account {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String name;
    private float credit;

    @Column(name = "accountpk")
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public float getCredit() {
        return credit;
    }

    public void setCredit(float credit) {
        this.credit = credit;
    }

}

运行代码时会返回

[{"id":1,"name":"Admin","age":22,"mobile":9632587410,"address":"Chennai","doorNo":234,"motherName":"Admin"
                ,"fatherName":"Admin","sibiling":1,"joiningDate":"2016-06-02","account":null},{"id":3,"name":"Admin"
                ,"age":22,"mobile":9632587411,"address":"Chennai","doorNo":235,"motherName":"Admin","fatherName":"Admin"
                ,"sibiling":1,"joiningDate":"2016-06-01","account":null}]

但我需要帐户表数据,请告诉我我对 Spring 很陌生

【问题讨论】:

    标签: java spring hibernate


    【解决方案1】:

    使用 hibernate 可以操作实体,而不是查询或它们的交集

    第一种方法:如果你想创建连接表,你可以手动通过

    sessionFactory.createQuery (with HQL) or sessionFactory.createSqlQuery (Native SQL)

    第二步:创建一个带有 NamedQuery 的新实体供选择

    Hibernate Named Query - join 3 tables

    第三:使用spring data创建带有特定方法名的repository(spring data根据方法名创建sql查询)或者在你的自定义Repository的方法上使用注解@Query来创建复杂的查询(与 JPQL)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多