Код: Выделить всё
@Query("SELECT new com.abc.cba.domain.Attachment(ia.createdBy, ia.fileName, ia.contentType, ia.someClass, ia.otherClass) from Attachment ia where ia.someClass=?1")
Конструктор:
public Attachment(User createBy, String fileName, String contentType, SomeClass someClass, OtherClass другойКласс) {
this.createdBy = createBy;
this.fileName = fileName;
this.contentType = contentType;
this.someClass = someClass;
this. OtherClass = OtherClass;
Если значения для ia.createdBy, ia.fileName, ia.contentType, ia.someClass, ia.otherClass равны нулю, то объект Attachment создается, где все значения свойств равны нулю.
Когда я вызываю метод, как показано ниже,
Attachment Attachment =repository.findAllBySomeClass("attachment");
Длинный идентификатор пользователя = Attachment != null && Attachment.getCreatedBy : 0L;
Приведенный выше оператор генерирует исключение нулевого указателя. Когда я отлаживал код, я вижу, что объект вложения существует, например
Attachment@564435, с хэш-кодом, и все значения свойств, такие как имя_файла, CreateBy внутри объекта вложения, имеют значение NULL. Но почему в этом случае Attachment.getCreatedBy выдает исключение нулевого указателя, поскольку он должен был вернуть 0, когда вложение имеет значение NULL. Можете ли вы помочь с этим, поскольку я не понимаю, почему этот код выдает исключение?
Подробнее здесь: https://stackoverflow.com/questions/781 ... jpql-query
Мобильная версия