如何建立单向一对一关系?

问题描述 投票:0回答:1
public class User {

    @Id
    private String user_id;
    
    private String email;
   
    private String password;

    @Getter
    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinTable(
            name = "user_roles",
            joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "user_id"),
            inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "role_id")
    )
    @JsonManagedReference(value = "users")
    private Set<Role> roles;
}



public class Role {

    @Id
    private String role_id;
   
    private String name;

    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "roles")
    @JsonBackReference(value = "roles")
    private Set<User> users;
}



public class Student {

    @Id
    @OneToOne
    private User student_id;
    private String name;
    private String email;
    private String phone;
    private String address;
}

想要映射与学生和用户的一对一关系。但只是从学生端,而不是从用户端。 User 中没有 Student 类型的字段,但 Student 中没有 User 类型的字段。每当我将学生添加到数据库时,该用户应该自动添加到用户表中。

可以吗?

spring-boot hibernate jpa spring-data-jpa orm
1个回答
0
投票

你可以在你的服务中这样做

User user = new User();
// Call setter to fill fields
Student student = new Student();
student.setUser(user);
// Call setter to fill other fields

userRepository.save(user);
studentRepository.save(student);

据我所知,您需要先保存用户,然后才能保存引用用户的学生。如果需要,您可以为此创建一个辅助方法。

© www.soinside.com 2019 - 2024. All rights reserved.