Spring JPA : Làm sao để Insert Data vào bảng quan hệ nhiều nhiều @ManytoMany extra comlumns

Hi các anh,
Em đang học về Spring Framework và giờ em muốn thêm dữ liệu vào một bảng nối từ nhiều bản khác với
annotation @ManytoMany with extra comlumns nhưng em không biết làm theo cách nào. Với các bản đơn thì em sử dụng phương thức save() có sẵn trong JPARepository để làm , em không biết với bảng có quan hệ nhiều nhiều thì mình có sử dụng hàm save() có sẵn được không hay mình sẽ viết cầu Query insert để thêm
Đây là database của em


Em đang muốn Insert vào bảng bookroom

Class Users_RoomId để định nghĩa Composite Primary Key

@Embeddable
public class Users_RoomId implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "ID_room", nullable = false)
private String idRoom;
@Column(name = "user_id", nullable = false)
private int idUser;
 }

Model Users_Room sử dụng @ManytoOne để nối với 2 Model Users và Room

 @Entity
 @Table(name ="bookroom")
 public class Users_Room {
@EmbeddedId
private Users_RoomId usersroomId;

 @ManyToOne
@MapsId("idRoom")
private Room room;

@ManyToOne
@MapsId("idUser")
private Users users;

@Column(name = "Bookday")
private String bookday;

Model Users , Room sẽ sử dụng annotation @OneToMany

@Entity
@Table(name = "users")
public class Users  implements Serializable{
private static final long serialVersionUID = 1L;
@Id
 @GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id", nullable = false)
private int id;


@Column(name = "name", nullable = false)
private String name;


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

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

@Column(name = "role")
private int role;

@OneToMany(mappedBy = "users")
private List<Users_Room> user;

Model Room

@Entity
@Table(name ="room")
public class Room implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID_room", nullable = false)
private String id;

@Column(name = "name_room", nullable = false)
private String name;


@Column(name = "Description")
private String describe;

@ManyToOne
@JoinColumn(name = "ID_status")
private Status status;

@Column(name = "room_image")
private String image;


public Room() {
    super();
}

@ManyToOne
@JoinColumn(name = "ID_kind")
private KindRoom kind;


@OneToMany(mappedBy = "room")
private List<Users_Room> rooms;

Em không biết em tạo Model đúng không nữa vì khi chạy nó báo lỗi về sql ở bảng Users_Room, nhưng nó vẫn chạy bình thường (các chức năng không liên quan tới bảng nối)

Hibernate: alter table bookroom add constraint FKfs7gmrypbqgxayh6v8lxibv5j foreign key(users_user_id) references users (user_id)
2018-06-26 09:29:11.084  WARN 7936 --- [           main] o.h.t.s.i.ExceptionHandlerLoggedImpl     : 
GenerationTarget encountered exception accepting command : Error executing DDL via JDBC 

Statement

1 Like

Cùng câu hỏi ạ, mong được giải đáp

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?