如何解决如何使用JPA查询方法返回带有NULL的OR条件?
Am正在尝试创建一个与所有等于tier
或为NULL的行匹配的查询。如Spring JPA Docs中所述使用查询方法。如果我只传递tier
,则下面的Default实现有效:-
@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);
}
我需要的是这样的东西,它抛出错误“找不到类型为User的属性为null”。我可以使用查询方法解决这个问题吗?:-
public interface UserRepository extends Repository<User,Long> {
List<User> findByTierOrNull_Id(@Param("tier")String tier);
}
解决方法
在其中一名响应者(由于某种原因删除了她的帖子)之后,我跟进了!
@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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。