【问题标题】:Many to One in hibernate, get column type休眠中的多对一,获取列类型
【发布时间】:2012-10-31 11:09:48
【问题描述】:

在Hibernate中当我得到简单的Pojo时,例如用户:

private class User{
   private String name;
}

当我想获取“名称”的属性时,一个简单的使用:

sessionFactory.getClassMetadata(User.class).getPropertyType("name")

但是当我向我的用户添加一个类 Grou 时:

private class User{
   private String name;
   private Group group;
}

我之前的代码:

  sessionFactory.getClassMetadata(User.class).getPropertyType("group.name")

不起作用。 有什么办法解决吗?

【问题讨论】:

    标签: java hibernate properties


    【解决方案1】:

    将您的查询 group.name 拆分为相应的部分 groupname

    Class<?> currentClass = User.class;
    for(String field: "group.name".split("\\Q.\\E")) {
        currentClass = sessionFactory.getClassMetadata(currentClass).getPropertyType(field);
    }
    

    【讨论】:

    • 对不起,我听不懂。 split("\\Q.\\E") 做什么?
    • JavadocSplit() 将字符串拆分为围绕匹配符号的几个部分(在本例中为.)。 .\Q\E 包围,这使得它可以按字面意思解释。没有这个,. 是正则表达式中的一个特殊符号,意思是“任何字符”。在 java 中,\Q 变为 \\Q,因为 \Q 被解释为“特殊符号 Q”。这类似于 \t 被解释为“TAB SYMBOL”。
    【解决方案2】:

    要使group.name 工作,您还必须为 Group 类指定映射。 如果您已经指定了映射但仍然无法正常工作,请在此处共享映射文件。 问题可能仅存在于映射中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 2012-02-02
      • 1970-01-01
      相关资源
      最近更新 更多