关于hibernate could not resolve property_ provinceId of 错误

关于hibernate could not resolve property : provinceId of 错误

1
org.hibernate.QueryException: could not resolve property: provinceId of: com.petewell.assess.hb.model.HBExameResult

这个错误是说,在ExameResult 中没有找到proviceId属性,通常情况下我们在ExameResult中添加相应的属性就可以了。
但此次报的错误没有你想象的那么简单,首先我的provinceId属性已经在BaseExameResult中定义。定义的关系如下:

1
2
3
4
5
6
7
8
9
10
//////////////////////
// BaseExameResult // -----> BaseExameResult.hbm.xml
//////////////////////

|
//////////////////////
// HBExameResult // -----> ExameResult.hbm.xml
//////////////////////


在上面的这种情况下,hibernate查找映射关系时,会直接查找子类而不会找父类。那么我们这样实现:

1
2
3
4
5
6
7
8
9
							////////////////////////////
// BaseExameResult // -----> BaseExameResult.hbm.xml
////////////////////////////
∆ ∆
| |
/////////////////// ///////////////////////
HBExameResult.hbm.xml<-// HBExameResult // /// CMExameResult //--> CMExameResult.hbm.xml
/////////////////// //////////////////////