相关疑难解决方法(0)

使用复合主键和注释映射ManyToMany:

我正在尝试使用复合主键在学生和教学课程之间创建许多非常多的关系:

我的课程:

@Entity
@Table(name="Student_mtm_cId")
public class Student {

    private String id;
    private Set<StudentTClass> teachingClasses = new HashSet<StudentTClass>();

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.student")
    public Set<StudentTClass> getTeachingClasses() {
        return teachingClasses;
    }
    public void setTeachingClasses(Set<StudentTClass> teachingClasses) {
        this.teachingClasses = teachingClasses;
    }

    public void addStudentToClass(TeachingClass teachingClass){
        StudentTClass studentTClass = new StudentTClass();
        studentTClass.setStudent(this);
        studentTClass.setTeachingClass(teachingClass);
        teachingClasses.add(studentTClass);
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    @Id @GeneratedValue(generator="system-uuid")
    @GenericGenerator(name="system-uuid", strategy = "uuid")
     @Column(name = "student_id", nullable = false)
    public String getId() {
        return id;
    } …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate java-ee

17
推荐指数
1
解决办法
3万
查看次数

如何将多个字段指定为实体的主键(使用JPA)

可以通过在JPA中使用@Id注释为其类指定主键.我的问题是如果一个人不希望在他的表中有一个自动生成的密钥并使用字段(可能不止一个)作为主键.

假设我们有一个SSN,NATIONALITY和NAME的人员表.SSN定义为他所在国家/地区识别出的人数.因此,我们可能在两个不同的国家有两个人数相同的人.该表的主键可以是SSN + NATIONALITY.有没有办法使用JPA映射这两个字段并将其映射到对象?或者它是创建自动生成的id并使用@Id注释的唯一方法

CREATE TABLE PERSON (
     SSN   INT,
     NATIONALITY VARCHAR,
     NAME VARCHAR
  )
Run Code Online (Sandbox Code Playgroud)

java orm jpa

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×2

hibernate ×1

java-ee ×1

jpa ×1

orm ×1

spring ×1