JAvaのormフレームワークebean多対多関係多表クエリー
3343 ワード
多対多関係は一般的に3枚の表が必要です
リレーショナル・データベースの多対多(many to many)リレーショナルの3つのテーブルか2つのテーブルか
student学生表courseカリキュラムsc選択カリキュラム
joinColumnsはjoin scon sc.stunum(name値)=student(現在のエンティティテーブル)を意味する.stunum(referencedColumnName値、@Id注記が必要)inverseJoinColumnsはcourseテーブルからcourse join sc on sc.coursenum(name値)=course.coursenum(referencedColumnName値、courseエンティティテーブルに@Id注記が必要)の間に、複数対の複数の関係を接続するテーブルscは、エンティティクラスを確立せずにstudentとcourseが複数対の複数の関係であることを示すために、2つのフィールドしか存在しない
エンティティは主に多対多の関係を構成する2つのエンティティ属性で、注記
プロパティはpublicなので直接取得できます.ebeanはエンティティの注釈に基づいて、対応するマルチペアマルチクエリーsql文を実行します.
完全プロジェクト参照コードクラウドプロジェクト:springboot-ebean
リレーショナル・データベースの多対多(many to many)リレーショナルの3つのテーブルか2つのテーブルか
student学生表courseカリキュラムsc選択カリキュラム
//student
@Id
private String stunum;
@ManyToMany
@JoinTable(name="sc",
joinColumns=@JoinColumn(name="stunum", referencedColumnName="stunum"),
inverseJoinColumns = @JoinColumn(name="coursenum",referencedColumnName="coursenum"))
public List courseEntities;
joinColumnsはjoin scon sc.stunum(name値)=student(現在のエンティティテーブル)を意味する.stunum(referencedColumnName値、@Id注記が必要)inverseJoinColumnsはcourseテーブルからcourse join sc on sc.coursenum(name値)=course.coursenum(referencedColumnName値、courseエンティティテーブルに@Id注記が必要)の間に、複数対の複数の関係を接続するテーブルscは、エンティティクラスを確立せずにstudentとcourseが複数対の複数の関係であることを示すために、2つのフィールドしか存在しない
//course
@Id
private String coursenum;
@ManyToMany
@JoinTable(name="sc",
joinColumns=@JoinColumn(name="coursenum",referencedColumnName = "coursenum"),
inverseJoinColumns = @JoinColumn(name="stunum", referencedColumnName="stunum"))
public List studentEntities;
エンティティは主に多対多の関係を構成する2つのエンティティ属性で、注記
//
StudentEntity student = StudentEntity.find.query()
.where().eq("stunum", "1999231424")
.findOne();
System.out.println(student.courseEntities.size());
for (CourseEntity course:student.courseEntities){
System.out.println(course.getName());
}
プロパティはpublicなので直接取得できます.ebeanはエンティティの注釈に基づいて、対応するマルチペアマルチクエリーsql文を実行します.
完全プロジェクト参照コードクラウドプロジェクト:springboot-ebean