регистрозависимые критерии гибернации для составного ключа - PullRequest
1 голос
/ 28 февраля 2012

У меня есть спящий объект с составным ключом, как в следующем примере.

class A{
B id; //this is the composite key for this class
int property1;
int property2;
int property3;
//getters and setters
}

class B{

String prop1;
String prop2;
String prop3;
}

В приведенном выше примере A объект имеет B в качестве составной ключ .Теперь я написал приведенные ниже критерии для получения объекта A путем передачи составного ключа crieteria.Пример кода приведен ниже.

B id=new B("Prop1Val","Prop2Val","Prop3Val");
(A) sessionFactory.getCurrentSession().get(A.class,id)

Мои вопросы:

  1. Я предполагаю, что приведенный выше код делает поиск с учетом регистра.Если я прав, как мне сделать так, чтобы поиск выполнялся без учета регистра?
  2. Правильный ли способ создать критерий, подобный приведенному ниже, для решения проблемы?

    Criteria criteria = sessionFactory.getCurrentSession().createCriteria(A.class);
    criteria.add(Restrictions.eq("id.prop1",id.getProp1()).ignoreCase());
    criteria.add(Restrictions.eq("id.prop2",id.getProp2()).ignoreCase());
    criteria.add(Restrictions.eq("id.prop3",id.getProp3()).ignoreCase());
    
  3. Есть ли какой-нибудь простой способ настроить его как файл hbm для использования без учета регистра по умолчанию?

1 Ответ

1 голос
/ 28 февраля 2012

Ваш критерий выглядит хорошо, но ваш запрос на получение регистронезависимого получения по умолчанию не имеет особого смысла.Что бы он сделал из нескольких строк в базе данных, имеющих PK, отличающиеся только регистром?

Я бы просто позаботился о том, чтобы ваши ключевые свойства всегда были в нижнем регистре, либо путем исключения, если передаются значения в верхнем регистрев конструктор B или путем автоматического преобразования их в нижний регистр.

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

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