[Edit: Судя по всему, это только вопрос для массивов и ответ FoxyBOA в может направить (или даже есть) ответ.]Почему связанные коллекции содержат нулевые значения? (Hibernate, аннотация, весна)
Мой вопрос связан с этим программным обеспечением: Hibernate3 + аннотаций , Spring MVC, MySQL и в этом примере также Spring Security.
Мне было интересно, почему коллекции, которые автоматически связаны с Hibernate, содержат нулевые значения для каждого номера строки дочерней таблицы (кроме правильных элементов). Мой пример:
У меня есть пользователей и Ан власти таблицы, первичный ключ из пользователей таблицы является имени пользователя, который служит в качестве внешнего ключа. Прямо сейчас, есть 13 строк в моих авторитетах таблице. Когда я извлечь пользователя из базы данных (MySQL InnoDB) и Hibernate автоматически извлекает органы данные пользователя, соответствующие этому отображению:
@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;
}
... Я в конечном итоге с коллекцией «власти», содержащий 14 (0-13) элементы из которых только четыре не являются нулевыми (четыре строки в таблице базы данных принадлежат этому конкретному пользователю, так что это правильно). Насколько я понимаю, я использую Hibernate по умолчанию для свойства, как Fetchmode и т.д. я получаю пользователь так:
Criteria criteria = getSession().createCriteria(User.class);
criteria.add(Restrictions.eq("username",username));
User user = (User) criteria.uniqueResult();
каротажную информация из org.hibernate.loader.loader правильно «упоминает» четыре строки для результат. Тем не менее, созданный пользователь имеет четыре правильных элемента плюс десять нулевых значений в массиве. В моем конкретном примере это приводит к этому исключению:
java.lang.IllegalArgumentException: Granted authority element 0 is null - GrantedAuthority[] cannot contain any null elements
Я добавил и удалил некоторые индексы, но по-прежнему получаю 14 значений с четырьмя правильными значениями в тех индексах массива, которые совпадают с значением в моем столбце id. Поэтому я действительно думаю, что это моя проблема. Не могли бы вы «разработать» немного больше, я не совсем понимаю, что вы имеете в виду. Спасибо, пока! – Wolfram