2

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

我知道 crtieria 对象会在代码中的某个位置创建类似这样的东西:

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

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

谢谢

4

2 回答 2

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));
于 2014-07-15T18:32:22.147 回答
0

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

使用别名创建条件,

createCriteria(String associationPath, String alias) 

将 alias 和 associatedPath 的映射保存在某处,可能在属性文件或 Map 中,可以从您想知道“persistentClass”的任何类访问。

然后使用getAlias()方法获取别名,并在您的地图/属性文件中查找以获取持久类。

于 2013-07-05T12:43:44.640 回答