Mã đó có hai điều ngăn cản nó hoạt động:
- Thực thể của bạn không có
@Id
. Bạn có thể chỉ bỏ qua vì đây là một ví dụ, nhưng nó đáng để chỉ ra. - Bạn đã lập bản đồ kép cột
parent_id
. Con có cả trường Dài và trường Cha được ánh xạ vào cùng một cột. Thoát khỏi Long. Đó là mối quan hệ của Cha mẹ mà bạn đang theo đuổi.
Sau đó, những gì bạn có là một-nhiều hai chiều hoàn toàn truyền thống với một cột tham gia. Nếu nó không hoạt động với bạn, thì bạn đang làm sai điều gì đó trong mã nơi bạn tạo và lưu chúng. Rất có thể, bạn đang tạo các đối tượng không đúng cách. Mã chính xác khi sử dụng các thực thể này sẽ trông giống như sau:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
Parent p = new Parent();
Child child = new Child();
child.parent = p;
Child child1 = new Child();
child1.parent = p;
p.children = Arrays.asList(child, child1);
session.save(p);
session.save(p.children.get(0));
session.save(p.children.get(1));
tx.commit();
Đặc biệt lưu ý rằng con nên được đặt trong cha mẹ cũng như cha mẹ trong con. Đừng xây dựng một mô hình đối tượng bị hỏng một nửa và mong đợi Hibernate dọn dẹp đống hỗn độn của bạn. Nhiều người bỏ qua yêu cầu dường như hiển nhiên này và tự hỏi tại sao Hibernate có vẻ không ổn định và / hoặc không đáng tin cậy.