У меня есть две таблицы, пользователи и изображения, которые необходимо объединить.в таблице пользователей есть ровно одна строка пользователя для множества изображений в таблице изображений.
В моем пользовательском компоненте у меня есть приватная переменная Set с отношением @OneToMany, она выглядит следующим образом
//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;
}
}
Тогда у меня есть бин UserImages, который хранит кучу данных, но имеет fk userId, который выглядит так.
//UserImages.java
private Integer userId;
@Column(name = "user_id", updatable=true, nullable=false)
public Integer getUserId() {
return userId;
}
public setUserId(Integer userId) {
this.userId = userId;
}
Я вызываю getUserImage namedQuery из моего DAO, чтобы получить resultSet.
Так что это работает хорошо, за исключением случаев, когда у пользователя НЕТ изображений в таблице UserImages.(Пользователь еще не загрузил ни одного изображения).Я настроил тест для проверки всего, и если у пользователя есть изображение, оно отлично работает, я могу вызвать метод getImages () для пользователя, и он вернет набор, и я смогу пройти через это.Но если у пользователя нет изображений, он сразу дает мне исключение нулевого указателя.
Я попытался установить для параметра Set значение null в методе setUserImages (), если переменная this.images = null, но это, похоже, не работает.Любая помощь будет отличной.Спасибо!