2012-10-31 70 views
0

在Hibernate中,當我簡單的POJO,例如用戶:多對一在Hibernate中,獲得列型

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

不起作用。 有什麼辦法解決它?

回答

0

將您的查詢group.name分爲對應部分groupname

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

對不起,但我無法理解。什麼分裂(「\\ Q。\\ E」)呢? – Cichy

+0

[Javadoc](http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String))Split()將字符串分成幾個部分匹配的符號(在本例中是'.')。 '.'被'\ Q'和'\ E'包圍,這使得它被逐字解釋。沒有這個,'.'是正則表達式中的一個特殊符號,意思是「任何字符」。在java中,'\ Q'變成'\\ Q',因爲'\ Q'被解釋爲'特殊符號'Q''。這與'T'被解釋爲'TAB SYMBOL'類似。 – parasietje

0

對於group.name工作,你也必須指定Group類的映射。 如果你已經指定了一個映射,但仍然不能正常工作,請在這裏分享映射文件。 問題可能只在映射中。