如何使用hibernate Criteria对象获取实体或类名

时间:2013-07-05 11:56:09

标签: hibernate

假设我有Criteria对象作为标准。现在我如何获得与此标准对象关联的实体或类的名称。

我知道crtieria对象会在代码的某个地方创建一些这样的东西:

Criteria criteria = getSession().createCriteria(persistentClass);

现在,如果我收到这个标准对象并想知道“persistentClass”实体,那么获得它的简单方法是什么?

感谢

2 个答案:

答案 0 :(得分:1)

  CriteriaImpl impl = (CriteriaImpl) criteria;
  String className = impl.getEntityOrClassName();

  if (className.equals(GenomicSequence.class.getName()))
        criteria.add(Restrictions.eq(BrcConstants.FAMILY_PARTITION, familyName));
  else
        criteria.add(Restrictions.eq("genomicSequence.family", familyName));

答案 1 :(得分:0)

不是一个确切的解决方案,但仍然,

使用别名

创建条件
createCriteria(String associationPath, String alias) 

保持alias和associatedPath在某处的映射,可以在属性文件或Map中,可以从哪个类中访问你想知道的类#34; persistentClass"。

然后使用 getAlias()方法获取别名,并在map / property文件中查找以获取persistentClass。