在我的项目中,我正在使用Hibernate并写入,现在我正在努力解决一个问题。在我正在进行的项目中,我需要创建类似动态查询的东西。让我介绍一下发生了什么......
我有8个不同的查询。每个查询的SELECT
,FROM
和第一个WHERE
子句都相同:
SELECT col1, col2, ..., colX FROM table WHERE col1 = :param1;
关键在于,基于一个参数,查询的其余部分在每种情况下都是不同的。以下案例:
WHERE
条件:AND col2 = :param2
。AND col3 = :param2
。JOIN
子句,在WHERE
子句第二个条件中再次出现在不同的列上,但在这里我们UNION
具有完全相同的查询,如第3点。WHERE
语句之前的UNION
子句中有不同的列。JOIN
和WHERE
子句中有3个条件而不是2个。我认为就是这样,但我只是提醒一下,对于所有这些查询,我们可以动态应用额外的WHERE
条件,但如果有{SELECT
,它们需要出现在JOIN
中1}}。
有可能吗?现在我通过使用StringBuilder
和if ... else
语句将正确的列名称传递给方法来解决问题,该语句负责UNION
,JOIN
和{{1}条件。
我并不为此感到骄傲,我不喜欢它,但我不知道如何更好地解决这个问题......
答案 0 :(得分:1)
我认为Hibernate的Criteria API应该对此有所帮助。 一些例子: http://www.baeldung.com/hibernate-criteria-queries