我有一个Spring Boot存储库,在其中我尝试使用HQL创建一个查询函数。
该函数接受一个整数参数,如果该参数为null,则查询应忽略该参数,否则应检查列表是否包含该值。
我有两个部分,空检查和列表检查,看起来像这样:
@Query("SELECT u FROM MyEntity " +
" WHERE (:myParam is null or :myParam in (2, 3))"
)
现在的问题是,对于(2,3)部分中的myParam,它抱怨“不一致的数据类型:预期的二进制数
(当:myParam为空,对于:myParam!=null它有效)
我试过:
>
将参数或空值转换为
使用coalesce(:myParam,CAST(NULL AS int))解决了一个类似的问题:myParam是一个整数列表
使用switch case语句
(case当:spracheKy为空,然后为真,当:spracheKy在(2,3)中然后为真,否则为假结束)=true
提前感谢您的帮助
为什么不使用两种不同的存储库方法,例如,一种不带参数,另一种带参数。然后决定并将决策逻辑封装在服务层的一个单独的方法中——我的意思是根据参数是否为null调用存储库方法的逻辑……可以如下所示:
@Service
@Transactional
public class YourService {
// autowired by constructor injection
private final YourEntityRepository repo;
public List<YourEntity> getAllYourEntitiesByParam(Long param) {
if (param == null) {
return repo.findAll();
}
return repo.findAllByParam(param);
}
}
我使用Spring Roo对现有数据库进行反向工程,以便对现有数据库进行hibernate建模,在存在复合主键的情况下,它会生成XyzClass和XYZClasspk。
我使用从我的mysql数据库添加节点到。 我的问题是记录中的某些列值可能为null。我如何在cypher查询中处理它们,因为对于mysql表中的null值,它没有创建任何节点。 下面是我使用neo4j java驱动程序创建节点的代码 在neo4j浏览器控制台中,当我在cypher下面运行查询时,没有形成任何节点。 更新:我能够在Java处理空值。但是对于另一张桌子,我有一些奇怪的行为。 在Neo4
我有两个Firestore集合,和。下面是每个文件中的典型文档所包含内容的简化示例。 此设置使查询任何给定用户按时间顺序排序的帖子变得非常容易,只需查找其字段等于该用户的文档引用的文档。 我在iOS/Swift中通过以下方法实现了这一点,尽管我们正在为iOS、Android和Web构建这个应用程序。 是否可以构建我正在描述的查询,或者我将不得不采用这种不太理想的方法?这似乎是一个相当常见的查询用例
问题内容: 我需要执行django查询,以检查字段是否包含列表中的所有值。该列表的长度将有所不同 例 问题答案: 对于python 3
问题内容: 找出JavaScript数组是否包含值的最简洁,最有效的方法是什么? 这是我知道的唯一方法: 有没有更好,更简洁的方法来实现这一目标? 这与Stack Overflow问题密切相关。在JavaScript数组中查找项目的最佳方法?解决使用数组查找对象的问题indexOf。 问题答案: 现代的浏览器,这不正是这一点,得到广泛支持的人,除IE: 你也可以使用,它不太直接,但对于过时的浏览器
问题内容: 找出JavaScript数组是否包含值的最简洁,最有效的方法是什么? 这是我知道的唯一方法: 有没有更好,更简洁的方法来实现这一目标? 这与Stack Overflow问题密切相关。 在JavaScript数组中查找项目的最佳方法?解决使用数组查找对象的问题。 问题答案: 现代的浏览器,这不正是这一点,得到广泛支持的人,除IE: 你也可以使用,它不太直接,但对于过时的浏览器不需要使用。