在hibernate中有多对一,获取列类型

时间:2012-10-31 11:09:48

标签: java hibernate properties

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

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")

不起作用。 有什么方法可以解决吗?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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