J'ai deux tables, utilisateurs et images qui doivent être jointes. il y a exactement une ligne d'utilisateur dans la table des utilisateurs pour beaucoup d'images dans la table d'images.Hibernate renvoie null unitilzed Collection
Dans mes utilisateurs haricots J'ai une variable Set privée avec une relation de @OneToMany il ressemble à ce
//Users.java
@Entity
@Table(name = "users")
@NamedQueries ({
@NamedQuery(name = "Users.getUserImage",
query("from Users as users INNER JOIN fetch users.images as image WHERE users.userId image.userId AND users.userId =: passedId")
})
public class Users
private Set<UserImages> images;
@OneToMany(mappedBy = "userId", fetch = FetchType.LAZY, cascade=CascadeType.ALL)
public Set<UserImages> getImages() {
return images;
}
public void setImages(Set<UserImages> images) {
this.images = images;
}
}
J'ai un haricot userimages qui stocke un tas de données, mais a le userId fk qui ressemble à alors. J'appelle getUserImage namedQuery à partir de mon DAO pour obtenir le resultSet. J'appelle getUserImage namedQuery. Cela fonctionne donc bien, sauf lorsqu'un utilisateur n'a AUCUNE image dans la table UserImages.
(L'utilisateur n'a pas encore téléchargé d'images). J'ai mis en place un test pour tester tout et si un utilisateur a une image cela fonctionne très bien, je peux appeler la méthode getImages() sur un utilisateur et il retournera un ensemble et je peux itérer à travers cela. Mais si l'utilisateur n'a aucune image, il me donne une exception de pointeur nul tout de suite.
J'ai essayé de définir Set à null dans la méthode setUserImages() si la variable this.images = null mais cela ne semble pas fonctionner. Toute aide est la bienvenue. Merci!
Merci pour votre réponse, mais cela me rend confus Je ne traite pas avec une clé étrangère, ma classe Users contient une variable privée Set qui stocke l'ensemble des objets UserImage qui sont associés à cet utilisateur. Je suis nouveau à ce sujet mais à partir de ce que vous avez écrit il semble que vous voulez que je stocke un ID utilisateur dans la classe UserImages? Je présume que l'utilisateur utilisateur privé doit être un utilisateur privé userId? –
HiberNATHAN
Non, vous n'avez pas affaire à une clé étrangère. Votre base de données traite avec une clé étrangère et Hibernate aussi. Vous avez affaire à une référence d'objet qui est automatiquement mappée à une clé étrangère. –
ok, donc je suppose que ce qui me consomme est cet utilisateur utilisateur privé, voulez-vous vraiment dire UserImages userId privé; le champ que j'utilise la notation mappedBy pour? – HiberNATHAN