#jpa #spring-data-jpa
#jpa #spring-data-jpa
Вопрос:
Я пытаюсь создать запрос, который либо соответствует всем строкам, которые равны tier
или равны нулю. Используя методы запроса, как описано в Spring JPA Docs. Приведенная ниже реализация по умолчанию работает, если я просто передаю tier
:-
@Entity
@Table(name = "tier")
class UuTier {
Long id;
Long tierId;
}
@Entity
@Table(name = "user")
class User {
@OneToOne
@JoinColumn(name="tier_id")
UuTier uuTier;
// Other Relationships
}
public interface UserRepository extends Repository<User, Long> {
List<User> findByTier_Id(@Param("tier")Long tier);
}
Что мне нужно, так это что-то вроде этого, которое выдает ошибку «Не найдено свойство null для типа User». Могу ли я достичь этого запроса с помощью методов запроса?:-
public interface UserRepository extends Repository<User, Long> {
List<User> findByTierOrNull_Id(@Param("tier")String tier);
}
Комментарии:
1. Как насчет
findByTierOrTierIsNull_Id
?
Ответ №1:
Продолжение от одного из респондентов (который по какой-то причине удалил свой пост) — я заставил это работать!!
@Query("SELECT entity FROM User entity LEFT JOIN UuTier uuTier ON entity.uuTier.tier = uuTier.tier"
" WHERE entity.uuTier.tier = :tier OR entity.uuTier.tier IS NULL")
public List<User> findByTierOrNull_Id(@Param("tier") Long tier);