Hibernate HQL Query: Как установить коллекцию в качестве именованного параметра запроса с составным ключом? - PullRequest
1 голос
/ 14 октября 2011

Учитывая следующий запрос HQL:

из Foo foo, где foo.id in (: fooIds)

, но здесь у меня есть составной ключ в Id ex, у нас есть два PK1 и pk2Идентификаторы.

Как мы можем реализовать этот запрос ..

как передать оба параметра в функцию setparameters запроса

Мой вопрос похож на этот вопрос

Файл HBM, содержащий составной ключ, представлен ниже

<?xml version="1.0"?>

    <composite-id>
        <key-property name="foo1" column="FOO1" type="java.lang.String" length="36"/>
        <key-property name="foo2" column="FOO2" type="java.lang.Short" />       
    </composite-id>

    <property name="EffectiveDt" type="java.sql.Date"  column="EFFECTIVE_DT" />             
    <property name="effectiveTypeCd" type="java.lang.String" column="CERT_EFF_TYPE_CD" />
    <property name="statusCd" type="java.lang.String" column="CERT_STATUS_CD" />


</class>

Ответы [ 2 ]

1 голос
/ 14 октября 2011

Вы используете составной идентификатор? У вас есть отдельный класс, представляющий составной идентификатор, или у вас есть 2 поля в Foo, и вы хотите искать, используя их в своем запросе? Поможет опубликовать вам класс Foo!

0 голосов
/ 14 октября 2011

Я не уверен на 100%, что вы можете использовать in в этом случае.Одна вещь, которую вы можете сделать, это создать запрос вручную с помощью чего-то вроде

 String hqlQuery = "from Foo foo where "
 boolean first = true;
 for( ID id : fooids ) {
     if( first ) {
          hqlQuery += "foo.id = ?";
          first = false;
     } else {
          hqlQuery += " OR foo.id = ?";
     }
  }

  Query q = em.createQuery(hqlQuery);
  int position = 0;
  for( ID id : fooids ) {
      q.setParameter(position, id);
      position++;
  }

Возможно, вы захотите дважды проверить код, как я пишу здесь, так что есть большая вероятность, что есть опечатка или два.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...