Java jpa多个用于一个子类,一个用于第二个子类
我有以下型号: 一个班级学生和超级班级项目,它有两个子类SmallProject和LargeProject。 只有一个学生可以从事小项目,但许多学生从事大项目。 一个学生可能有很多项目Java jpa多个用于一个子类,一个用于第二个子类,java,hibernate,jpa,Java,Hibernate,Jpa,我有以下型号: 一个班级学生和超级班级项目,它有两个子类SmallProject和LargeProject。 只有一个学生可以从事小项目,但许多学生从事大项目。 一个学生可能有很多项目 @Entity @Inheritance(strategy = InheritanceType.JOINED) @Table(name = "PROJECT") public class Project { @Id @Column(name="id") @GeneratedValue(strat
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "PROJECT")
public class Project {
@Id
@Column(name="id")
@GeneratedValue(strategy = GenerationType.AUTO
public int getId(){ return id;}
/**
Other attributes
*/
}
@Entity
@Table(name = "SMALL_PROJECT")
@PrimaryKeyJoinColumn(name = "ID")
public class SmallProject extends Project {
@ManyToOne(cascade= CascadeType.ALL)
@JoinColumn(name = "STUDENT_ID")
private Student student;
/**
Other attributes
*/
}
@Entity
@Table(name = "LARGE_PROJECT")
@PrimaryKeyJoinColumn(name = "ID")
public class LargeProject extends Project {
@ManyToMany
@JoinTable(
name = "STUDENT_LARGE_PROJECTS",
joinColumns = {@JoinColumn(name="LARGE_PROJECT_ID", referencedColumnName = "ID")},
inverseJoinColumns = {@JoinColumn(name="STUDENT_ID", referencedColumnName = "ID")}
)
private List<Student> studentList;
/**
Other attributes
*/
}
@实体
@继承(策略=InheritanceType.JOINED)
@表(name=“项目”)
公共类项目{
@身份证
@列(name=“id”)
@GeneratedValue(策略=GenerationType.AUTO
public int getId(){return id;}
/**
其他属性
*/
}
@实体
@表(name=“小型项目”)
@PrimaryKeyJoinColumn(name=“ID”)
公共类SmallProject扩展项目{
@多通(级联=级联类型.ALL)
@JoinColumn(name=“学生ID”)
私立学生;
/**
其他属性
*/
}
@实体
@表(name=“大型项目”)
@PrimaryKeyJoinColumn(name=“ID”)
公共类大型项目扩展项目{
@许多
@可接合(
name=“学生\大型\项目”,
joinColumns={@JoinColumn(name=“LARGE\u PROJECT\u ID”,referencedColumnName=“ID”)},
inverseJoinColumns={@JoinColumn(name=“STUDENT\u ID”,referencedColumnName=“ID”)}
)
私人名单学生名单;
/**
其他属性
*/
}
我的问题是如何定义学生实体中的关系。获取所有项目的列表,而不是SmallProject和LargeProject的列表
@Entity
@Table(name= "STUDENT")
public class Student {
@??
private List<Project> projectList;
/**
Other attributes
*/
// This works, but i have two lists
@ManyToMany(mappedBy = "studentList")
private List<LargeProject> LargeProject;
@OneToMany(mappedBy = "student")
private List<SmallProject> smallProject;
}
@实体
@表(name=“STUDENT”)
公立班学生{
@??
私人清单项目清单;
/**
其他属性
*/
//这是可行的,但我有两个列表
@许多(mappedBy=“studentList”)
私人上市大型项目;
@OneToMany(mappedBy=“学生”)
私人项目;
}
如果在项目和学生之间定义一个多人的关系,这是可行的。但这意味着一个小项目也可能有多个学生
知道怎么做吗?谢谢任何人都可以帮忙!!谢谢