0

私は休止状態を使用しています。以下のクエリを作成する必要があります。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() );
4

2 に答える 2

2

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") );

基準クエリの使用方法の詳細については、こちらを参照してください

于 2012-05-28T06:02:44.207 に答える
1
     Query query = null;
     if(cont != null){
        query = getEntityManager().createQuery( "select * from Upload where moderated=:mod, subContest_id=:cont order by lastModifiedTime desc " );
 query.setParameter( "cont", subContest.getId() );
 query.setParameter( "mod", moderated.getId() );
     } esle {
        query = getEntityManager().createQuery( "select * from Upload where moderated=:mod order by lastModifiedTime desc " );
 query.setParameter( "mod", moderated.getId() );
     }
于 2012-05-28T09:25:05.657 に答える