复合键的不区分大小写的hibernate标准

时间:2012-02-28 07:17:59

标签: hibernate orm hibernate-mapping hibernate-criteria

我有一个带有复合键的hibernate实体,如下面的示例所示。

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 作为复合键。现在我通过将复合键传递给crieteria来编写以下标准来获取 A 对象。示例代码如下。

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 个答案:

答案 0 :(得分:1)

您的标准看起来很好,但默认情况下,您执行不区分大小写的请求没有多大意义。它对数据库中的几行有什么作用,PK只有大小写不同?

我只是确保你的关键属性总是小写,如果将大写值传递给B构造函数,则抛出异常,或者自动将它们转换为小写。

如果某些其他应用程序在数据库中插入数据,您可以使用数据库中的已检查约束执行相同的操作。