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