[Edit: Apparemment, cela est seulement un problème pour les tableaux et la réponse de FoxyBOA pourrait diriger (ou même est-) la réponse.]Pourquoi les collections associées contiennent-elles des valeurs nulles? (Mise en veille prolongée, Annotation, Printemps)
Ma question porte sur ces logiciels: Hibernate3 + Annotation , Spring MVC, MySQL et dans cet exemple aussi Spring Security. Je me demandais pourquoi les collections, qui sont automatiquement associées par Hibernate, contiennent des valeurs NULL pour chaque numéro de ligne de la table enfant (en plus des éléments corrects). Mon exemple:
J'ai un utilisateurs et une autorités table, la clé primaire des utilisateurs tableau est nom d'utilisateur qui sert de clé étrangère. À l'heure actuelle, il y a 13 lignes dans ma table autorités. Lorsque je récupère un utilisateur de la base de données (MySQL InnoDB) et Hibernate récupère automatiquement les autorités de l'utilisateur correspondant à cette cartographie:
@OneToMany
@JoinColumn(name = "username")
@IndexColumn(name="id") // "id" was the primary key and is used to sort the elements
public Authority[] getAuthorities() {
return authorities;
}
public void setAuthorities(Authority[] authorities) {
this.authorities = authorities;
}
... Je finis avec une « autorités » collection contenant 14 (0-13) les éléments dont seulement quatre ne sont pas null (quatre lignes dans la table de base de données appartiennent à cet utilisateur spécifique, donc c'est correct). Pour autant que je me rends compte, j'utilise par défaut Hibernate pour des propriétés comme fetchmode etc. Je reçois l'utilisateur comme ceci:
Criteria criteria = getSession().createCriteria(User.class);
criteria.add(Restrictions.eq("username",username));
User user = (User) criteria.uniqueResult();
Le org.hibernate.loader.loader de correctement les informations de journalisation « mentions » quatre lignes pour le résultat. Néanmoins, l'utilisateur créé a les quatre éléments corrects plus dix valeurs NULL dans le tableau. Dans mon exemple spécifique, cela se traduit par cette exception:
java.lang.IllegalArgumentException: Granted authority element 0 is null - GrantedAuthority[] cannot contain any null elements
J'ai ajouté et supprimé des index, mais je reçois toujours 14 valeurs avec quatre valeurs correctes à ces index de tableau qui sont identiques à la valeur de ma colonne id. Donc je pense vraiment que c'est là que réside mon problème. Pourriez-vous «élaborer» un peu plus, je ne comprends pas très bien ce que vous voulez dire. Merci pour l'instant! – Wolfram