Tôi không chắc tôi hiểu sơ đồ lạ này ... RegionLanguage có một số loại khoá ngoại nào đó trỏ đến Region.id, tôi lấy nó? Nếu Region chỉ có một cột (như được hiển thị trên 'sơ đồ'), bạn có thể chỉ đơn giản là ánh xạ 'RegionLanguage' và bạn sẽ chỉ có một thực thể như bạn muốn --- không có thông tin nào bị mất;).
Nhưng nghiêm túc, bạn muốn nó được lập bản đồ như thế nào? Bạn có muốn có một cái gì đó như thế này:
class Region {
//.. the missing fields not shown in diagram
List<String> languages; // take only language to avoid creating separate entity for region language
}
hoặc một cái gì đó như thế này:
class RegionInnerJoinRegionLanguage {
// all fields from Region
// all fields from RegionLanguage
}
Trong bất kỳ trường hợp bạn không nói như thế nào với phần còn lại của bảng được kết nối với các bảng i18n của bạn. Từ mô tả của bạn, tôi đoán, rằng tất cả các bảng có fk để RegionLanguage. Tôi không chắc bảng Region được sử dụng như thế nào trong kế hoạch lớn của mọi thứ. Tôi đoán nó chỉ là để nhóm các ngôn ngữ ... Tôi tưởng tượng này 'mô hình' Thụy Sĩ (một 'khu vực' 4 ngôn ngữ) ... Nhưng bạn sẽ làm gì với các ngôn ngữ được nói ở một số khu vực? Bạn sẽ có một số ngôn ngữ tiếng Pháp, tiếng Anh, vv (một cho mỗi khu vực) và tất cả dữ liệu nhân với mỗi người trong số đó?
Tôi biết bạn không yêu cầu điều này ... Tôi chỉ nghĩ rằng bạn đã đơn giản hóa cấu trúc dữ liệu của bạn cho câu hỏi này ... Rất nhiều để khó đoán những gì bạn thực sự muốn đạt được.
Trong mọi trường hợp, nếu bạn muốn sử dụng danh sách các cách tiếp cận chuỗi, bạn có thể thử này:
@ElementCollection
@CollectionTable(name="RegionLanguage",
[email protected](name="regionID") // or whatever... it's not on your diagram.
)
@Column(name="langage")
private List<String> langages;
tôi vẫn không hiểu tại sao bạn muốn đặt cả hai bảng thành một thực thể duy nhất .. Nếu đó là dữ liệu 'chỉ đọc', bạn có thể thử tạo chế độ xem và ánh xạ nó --- luôn luôn là 'cách thoát';). Nhưng nó (cả hai người trong số họ, trên thực tế) một chút quá phức tạp, với tâm trí của tôi --- nó sẽ cắn bạn trong tương lai. Lời khuyên của tôi là chỉ cần đi với 'bản đồ OneToMany đơn giản'.
Bạn đã tìm thấy giải pháp cho vấn đề này chưa? Và nếu có, bạn có muốn chia sẻ nó (như một câu trả lời) không? Chúng tôi đang đối mặt với cùng một vấn đề, chưa tìm thấy một giải pháp tốt đẹp nào (hầu hết là kết quả trong các truy vấn N + 1, mà chúng tôi chắc chắn không muốn). – wimvds
Nhà cung cấp JPA nào bạn đang sử dụng? – siebz0r
Tôi hoàn toàn không hiểu tại sao một liên kết @OneToMany đơn giản giữa Region và RegionLanguage không hoạt động cho bạn? –