在Hibernate中创建动态sql时;我如何实现1 = 1

我正在使用hibernate模式。我需要在下面创建查询。subContest可能为null,在这种情况下,subContest_id=:cont不应将其作为where子句的一部分。在常规SQL中创建动态sql时;对于这种情况,我曾经做过,subContest_id

= subContest_id ;但在以下情况下如何实现。在这里,如果我尝试这样做query.setParameter( "cont",

"subContest_id " );,将给出异常,因为cont应该是id而不是字符串。

    Query query = getEntityManager().createQuery( "select * from Upload where moderated=:mod, subContest_id=:cont order by lastModifiedTime desc " );

query.setParameter( "cont", subContest.getId() );

回答:

您可以尝试在hibernate中使用条件查询

Criteria criteria = session.createCriteria(Upload.class);

您可以添加where子句作为限制

Criteria criteria = session.createCriteria(Upload.class)

.add(Restrictions.eq("mode", value));

在您的情况下,您想在添加限制之前检查null

if(subContest_id!=null){

criteria.add(Expression.le("subContest_id",subContest_id));

}

最后可以使用此命令

Criteria criteria = session.createCriteria(Upload.class)

.addOrder( Order.desc("lastModifiedTime") );

请参考此处以了解有关如何使用条件查询的详细信息

以上是 在Hibernate中创建动态sql时;我如何实现1 = 1 的全部内容, 来源链接: utcz.com/qa/403591.html

回到顶部