Comment faire cela, sélectionnez * à partir de deux tables jointes requête HQL forme?

J'ai eu deux hibernate entity ici avec l'annotation:

@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;
}
...
}

La relation de un-à-plusieurs qui un Client a de nombreux Compte. Comptes de la Table a la clé étrangère (FK_CLIENT) à la table du CLIENT est la clé primaire (PK_CLIENT).

Je veux effectuer cette requête HQL forme:

select * from ACCOUNT a inner join CLIENT b on a.FK_CLIENT = b.PK_CLIENT

- Ce que cela signifie, toutes les propriétés de Compte et le Client entité sera sélectionné.

Ce que quelqu'un sait comment faire pour que la requête HQL forme?

Autant que je sache, dans les requêtes HQL nous ne pouvez sélectionner qu'une seule entité.

Remarque:

Je ne peux pas utiliser @ManyToOne de cartographie en Compte de l'entité, car il est déjà fkClient bien et je ne peux pas changer cela parce que le get/setFkClient a déjà été utilisé dans d'autres endroits.

Le code ci-dessus a été simplifiée par la suppression sans rapport avec les pièces pour les rendre plus faciles à lire. Si vous trouvez une erreur, s'il vous plaît laissez-moi savoir dans la section commentaire depuis que j'ai tapé le code manuellement.

  • Si vous ne pouvez pas faire une cartographie à dire d'hibernate que ces deux sont liés alors hibernate ne peut pas vous aider. Vous devez d'abord sélectionner votre Account les objets, puis créer un Collection de Client id d'eux et de faire une autre sélection. En tout cas, ce n'est pas comment hibernate œuvres, lire sur les relations simples. Votre Account doit avoir une référence à un Client objet, pas clé étrangère. C'est le travail de hibernate pour remplir cet objet de référence de la base de données.
  • euh, donc pas de solution à tous avec mise en veille prolongée? Je ne peux pas ajouter un mappage sans casser d'autres codes.
InformationsquelleAutor null | 2013-03-28