Hibernate annotations et de la relation de clé étrangère
J'ai un objet de domaine annoté comme ça, pour la mise en veille prolongée.
@Entity
@Table(name = "INPUT")
public class AppInput {
/**
* Unique id for this request
*/
@Id
@GeneratedValue
@Column(name = "INPUT_ID")
private long requestId;
/**
*
*/
@Column(name = "EMAIL_ID")
private String emailId;
/**
*
*/
@Column(name = "REQUEST_DATE")
private Date requestDate;
/**
*
*/
@Column(name = "INPUT_STATUS")
private char status;
/**
*
*/
@Column(name = "EXPECTED_ORDER_DATE")
private Date expectedOrdDt;
//Getter and setters
}
La propriété emailId est une clé étrangère qui fait référence à dire emailId colonne dans la table User. Disons que j'ai ajouter une propriété de ce genre pour AppInput.java
private User userDetails;
Comment puis-je ajouter des annotations afin que, chaque fois que je chercher AppInput de db, les détails de l'utilisateur également être rempli?
OriginalL'auteur user378101 | 2010-07-28
Vous devez vous connecter pour publier un commentaire.
Alors ne pas ajouter le
emailId
bien, ajoutez uneUser
.Pas sûr, car il pourrait être un
ManyToOne
ouOneToOne
mais je vais supposer que c'est unManyToOne
:La
fetch
annotation élément est à des fins de démonstration,EAGER
en fait, étant la valeur par défaut. Lename
etreferencedColumn
annotation des éléments dansJoinColumn
sont également en option. Ci-dessous un court résumé de la spécification JPA:Voir le Tableau 20 dans la spécification complète et exhaustive de détails.
Petite faute de frappe,
fetch
est une annotation élément deManyToOne
. Concernant le deuxième message d'erreur, il sembleUser
n'est pas une entité (vous avez besoin de les annoter avec@Entity
et à les déclarer dans votrepersistence.xml
). Seules les entités peuvent être utilisés dans des associations.Je m'en doutais, mais la classe d'Utilisateur est déjà annotées avec @Entity.
Pouvez-vous montrer le
User
classe? Êtes-vous sûr que vous n'obtenez pas de message d'erreur au démarrage de l'application (quelque chose qui serait de prévenirUser
pour obtenir mappé correctement)?Merci, ça fonctionne maintenant. J'avais annoté de la méthode getUser. Essayé annotation sur le terrain et il fonctionne. Quelle est la différence?
OriginalL'auteur Pascal Thivent