ここには、注釈付きの 2 つの休止状態のエンティティがありました。
@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;
}
...
}
関係は、クライアントが多数のアカウントを持つ 1 対多です。表 ACCOUNT には、表 CLIENT の主キー (PK_CLIENT) への外部キー (FK_CLIENT) があります。
このクエリを HQL 形式で実行したい:
select * from ACCOUNT a inner join CLIENT b on a.FK_CLIENT = b.PK_CLIENT
つまり、アカウントおよびクライアント エンティティのすべてのプロパティが選択されます。
そのクエリを HQL 形式で作成する方法を知っている人はいますか?
私の知る限り、HQL では 1 つのエンティティしか選択できません。
注:
fkClient プロパティが既に存在するため、Account エンティティで @ManyToOne マッピングを使用できません。また、get/setFkClient が他の場所で既に使用されているため、これを変更できません。
上記のコードは、読みやすくするために無関係な部分を削除して単純化されています。タイプミスを見つけた場合は、コードを手動で入力したため、コメント セクションでお知らせください。