Tôi đang sử dụng Play Framework (hương vị Java) cho một dự án. Trong dự án này, tôi có hai mô hình mà tôi muốn tạo ra một mối quan hệ OneToOne
giữa.Khung chơi, mối quan hệ OneToOne không hoạt động
Tôi có mẫu User
và kiểu UserLegalName
. Tôi muốn mỗi User
để có một mô hình UserLegalName
.
User
model code
UserLegalName
model code
Vấn đề là các User
và UserLegalName
không đường may để bị "liên quan"
Cột user_user_id
luôn là NULL
. Tôi đã cố gắng JoinColumn(name = "user_id")
cho User
trong UserLegalName
nhưng điều này không làm việc, hoặc
Edit:
Sau khi @Sivakumar câu trả lời và sửa lỗi trong code của tôi UserLegalName
hiện đang lưu trữ một cách chính xác
Tuy nhiên khi tôi cố gắng để có được UserLegalName
cho người dùng, nó vẫn bật lên null
User.find.where().eq("userId", userId).findUnique()
nào trả
{"userId":"f5ea6d1d-d22d-4127-b6e7-0b3d0446edfe","legalName":null}
Sửa 2:
Bạn có thể thêm fetch=FetchType.EAGER
đến OneToOne
chú thích trong mô hình User
và điều đó sẽ lấy UserLegalName
mỗi lần. Tuy nhiên trên thực tế mô hình User
phức tạp hơn nhiều. Nó nắm giữ nhiều mối quan hệ hơn.
Có cách nào khác để thực hiện việc này không? Bằng cách giữ loại tìm nạp là EAGER
, nó có thể tạo truy vấn không hiệu quả (EX: Tôi chỉ muốn email người dùng, trong một bảng riêng biệt, nhưng nó cũng truy vấn bảng User_Legal_Name
)
Các bạn đã thử giải pháp từ http://stackoverflow.com/questions/8560988/onetoone-mapping-play-framework-enitity? – Beri
Sự cố phải ở trong mã của bạn, không phải ánh xạ, vì vậy hãy hiển thị cho chúng tôi mã mà bạn sử dụng để lưu UserLegalName. Ngoài ra xin vui lòng hiển thị trong câu hỏi của bạn, từ những gì DB bảng bạn nên dữ liệu. –
Xin lưu ý rằng tôi đã trả lời trước, chỉ để lưu chính xác các thực thể. –