我有这些简化类型:
public class DataBean extends ZZZZZ {
public String name;
}
public class Member extends CCCCC {
public DataBean m_data;
}
我想直接在m_data
内映射name
。Member
。
我不能在两者之间使用任何类型的继承(已占用!)。
这将是理想的:
<property name="m_data.name" column="name" type="string" access="field" />
有什么想法吗?是否可以使用Hibernate?
目前我收到此错误:
org.hibernate.PropertyNotFoundException:找不到字段[m_data.name] 在com.example.Member
主要原因是我正在尝试(重新)使用从http服务中获取的数据bean,我真的不想重写所有字段,也不想写一个setter / getter。
答案 0 :(得分:6)
name
属性实际上在DataBean
类中。所以,你得到的例外是显而易见的。因为映射适用于Member
。
DataBean
嵌入在Member
中,要映射嵌入类中的字段,您必须使用<component>
元素。
请在SO:Hibernate @embeddable annotation equivalent for XML mapping file?
中参考此问题的答案答案还有一个指向页面的链接,该页面解释了嵌入对象的映射方式。
<强>更新强>
<component
name="m_data"
class="com.example.DemoBean"
access="field">
<property name="name" column="NAME" type="string" access="field" />
</component>