5

Tôi có một dự án sử dụng Hibernate trên cơ sở dữ liệu Oracle mà tất cả các thực thể được tạo trực tiếp từ Hibernate Tools dưới sự kiểm soát của tệp hibernate.reveng.xml.Làm cách nào để tôi có thể thay đổi tên của tập hợp nhiều người tự tham chiếu bằng hibernate.reveng.xml?

Tôi có một lớp trong đó có một mối quan hệ nhiều-nhiều với chính nó sử dụng một bảng trung gian, như vậy:

PERSON: 
    ID 
    ... 

PERSON_PERSON: 
    PARENT_ID --> PERSON.ID 
    CHILD_ID --> PERSON.ID 

Nếu không có bất kỳ chỉ thị cụ thể, Hibernate Tools sẽ tự động tạo ra một lớp trông như thế này :

public class Person { 
    private Long id; 
    private Set<Person> personsForParentId = new HashSet<Person>(0); 
    private Set<Person> personsForChildId = new HashSet<Person>(0); 
} 

Vì đó không phải là rất hữu ích khi mã hóa để xác định bộ gốc và tập con nào, tôi muốn đổi tên chúng thành 'cha mẹ' và 'con'.

Tôi đã chỉnh sửa tệp hibernate.reveng.xml để cố ép buộc đổi tên trường đó, nhưng tôi không thể tìm thấy thứ gì đó hoạt động. Tôi không chắc liệu tôi có đang chỉ định thay đổi trên bảng PERSON hay không, bảng PERSON_PERSON hoặc cả hai và thuộc tính nào cần thay đổi.

Tôi đã quen với việc thiết lập các lớp này theo cách thủ công, nhưng trong dự án này, tôi không có quyền kiểm soát quá trình xây dựng, vì vậy tôi phải làm gì với công cụ Hibernate Tools làm cho Hibernate Tools làm những gì tôi muốn.

+1

Tôi khá chắc chắn rằng nó đang sử dụng siêu dữ liệu SQL để tạo ra chúng. Do đó, tôi không nghĩ rằng bạn sẽ có thể có quá trình tự động đi chệch khỏi những gì bạn có. – javamonkey79

Trả lời

1

trên tệp hibernate.reveng.xml của bạn, hãy thử đánh dấu các cột có liên quan như thế này;

<column name="personsForParentId" property="parents" /> 
+0

Dự án câu hỏi này là cho quá khứ lâu dài, vì vậy tôi không thể xác nhận, nhưng nếu có một sự đồng thuận ở đây tôi có thể thiết lập này như là câu trả lời đúng. – Jon

Các vấn đề liên quan