tôi có hai thực thể ngủ đông ở đây với chú thích:Làm cách nào để thực hiện việc này * từ hai truy vấn bảng được nối kết trong biểu mẫu HQL?
@Entity
@Table(name = "CLIENT")
public class Client {
private Long pkClient;
private String name;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="PK_CLIENT")
public Long getPkClient() {
return pkClient;
}
public void setPkClient(Long pkClient) {
this.pkClient = pkClient;
}
@Column(name="NAME")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
...
}
@Entity
@Table(name="ACCOUNT")
public class Account {
private Long pkClientAccount;
private Long fkClient;
private String accountNo;
@Id
@Column(name="PK_CLIENT_ACCOUNT")
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getPkClientAccount() {
return pkClientAccount;
}
public void setPkClientAccount(Long pkClientAccount) {
this.pkClientAccount = pkClientAccount;
}
@Column(name="FK_CLIENT")
public Long getFkClient() {
return fkClient;
}
public void setFkClient(Long fkClient) {
this.fkClient = fkClient;
}
@Column(name="ACCOUNT_NO")
public String getAccountNo() {
return accountNo;
}
public void setAccountNo(String accountNo) {
this.accountNo = accountNo;
}
...
}
Mối quan hệ là một-nhiều mà một khách hàng có nhiều tài khoản. Bảng ACCOUNT có khóa ngoài (FK_CLIENT) để bàn khóa chính của CLIENT (PK_CLIENT).
Tôi muốn thực hiện truy vấn này ở dạng HQL:
select * from ACCOUNT a inner join CLIENT b on a.FK_CLIENT = b.PK_CLIENT
bình này, tất cả tài sản từ tài khoản và thực thể khách hàng sẽ được lựa chọn.
Bất kỳ ai biết cách tạo truy vấn đó dưới dạng HQL?
AFAIK, trong HQL, chúng tôi chỉ có thể chọn một thực thể.
Lưu ý:
Tôi không thể sử dụng ánh xạ @ManyToOne trong thực thể Tài khoản vì đã có thuộc tính fkClient và tôi không thể thay đổi điều này vì get/setFkClient đã được sử dụng ở những nơi khác.
Mã ở trên đã được đơn giản hóa bằng cách xóa các phần không liên quan để dễ đọc hơn. Nếu bạn tìm thấy lỗi đánh máy, vui lòng cho tôi biết trong phần nhận xét vì tôi đã nhập mã theo cách thủ công.
Nếu bạn không thể làm một bản đồ để biết ngủ đông mà những hai có liên quan sau đó ngủ đông không thể giúp bạn. Trước tiên bạn sẽ phải chọn các đối tượng 'Account' của bạn sau đó tạo một' Collection' của các id 'Client' từ chúng và thực hiện một lựa chọn khác. Trong mọi trường hợp, đây không phải là cách hoạt động của công thức ngủ đông, đọc trên [mối quan hệ đơn giản] (http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/mapping.html). Tài khoản 'của bạn cần phải có tham chiếu đến một' Client' _object_, ** không ** khóa ngoài. Đó là sau đó công việc của hibernate để cư mà tham chiếu đối tượng từ cơ sở dữ liệu. –
duh, vì vậy không có giải pháp nào cả với hibernate? Tôi không thể thêm ánh xạ mà không vi phạm các mã khác. – null