1

我有这些简化的类型:

public class DataBean extends ZZZZZ {
    public String   name;
}

public class Member extends CCCCC {
    public DataBean m_data;
}

我想映射m_dataname直接在Member. 我不能在两者之间使用任何类型的继承(已经被占用了!)。

将是理想的

<property name="m_data.name" column="name" type="string" access="field" />

任何的想法?Hibernate可以吗?

目前我收到此错误:

org.hibernate.PropertyNotFoundException:在 com.example.Member 上找不到字段 [m_data.name]

主要原因是我试图(重新)使用从http服务获取的数据bean,我真的不想重写所有字段,也不想编写setter/getter。

4

1 回答 1

6

name属性实际上在DataBean类中。所以,你得到的例外是显而易见的。因为映射是针对Member.

DataBean嵌入并映射嵌入类中的Member字段,您必须使用该<component>元素。

请在 SO 中参考此问题的答案:Hibernate @embeddable annotation 等效于 XML 映射文件?

答案还有一个指向页面的链接,该页面解释了嵌入对象是如何映射它们的。

更新:

<component
        name="m_data"
        class="com.example.DemoBean"
        access="field">
    <property name="name" column="NAME" type="string" access="field" />
</component>
于 2012-06-12T01:22:43.947 回答