簡體   English   中英

如何spring jpa hibernate創建多對一但沒有外鍵的實體

[英]how to spring jpa hibernate create Entity that has many to one but without foreign key

我有兩個具有多對一關系的表,但它們沒有外鍵。 就像Student很多,而Teacher是一個,

實體例如:

@Entity
@Table(name = "student")
class Student {


   @Column(name = "TeacherName")
   private String teacherName;

   @ManyToOne
   private Teacher teacher
}


@Entity
@Table(name = "teacher")
class Teacher {

 private String name;
}

當我查詢學生時,sql 是:

select * from Student as st INNER JOIN Teacher as tcr ON st.TeacherName = tcr.name;

我發現@ManyToOne不能工作,看起來它需要一個外鍵。 表不能提供這樣雖然。

有人能告訴我如何配置實體嗎?

您必須使用以下映射:

public class Teacher  {

    @OneToMany(mappedBy = "teacher")
    private Set<Student> students;

    @Column(name = "name")
    private String name;
}

public class Student {
    @ManyToOne
    @JoinColumn(name = "teacherName", referencedColumnName = "name")
    private Teacher teacher;

}

然后在 HQL 中:

select s from Student s INNER JOIN s.teacher t where t.name = :name 

或者,如果您想保留當前的映射,那么您需要使用 hql 中的“舊”連接樣式來實現非外鍵列的連接:

select s from Student s, Teacher t where t.name = s.teacherName and t.name = :name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM