基本上,是可能的?内部类作为休眠组件
文档说
A组分是持久化为值类型,而不是一个实体引用包含的对象。
与值类型相似,组件不支持共享引用。换句话说,两个人可以具有相同的名称,但是两个人物对象将包含两个独立的名称对象,这些名称对象的值仅为“相同”。
值类型的主要特征是它们没有定义自己的生命周期。我们说他们是由其他人(特别是一个实体,我们将在后面看到)“拥有”,它定义了它们的生命周期。
非静态的内部类可以很好地适应这一点,但我从来没有见过在实践中的例子。使用内部类作为组件有什么限制吗?
基本上,是可能的?内部类作为休眠组件
文档说
A组分是持久化为值类型,而不是一个实体引用包含的对象。
与值类型相似,组件不支持共享引用。换句话说,两个人可以具有相同的名称,但是两个人物对象将包含两个独立的名称对象,这些名称对象的值仅为“相同”。
值类型的主要特征是它们没有定义自己的生命周期。我们说他们是由其他人(特别是一个实体,我们将在后面看到)“拥有”,它定义了它们的生命周期。
非静态的内部类可以很好地适应这一点,但我从来没有见过在实践中的例子。使用内部类作为组件有什么限制吗?
经过一番研究,我发现,答案是没有,这是不可能的
其原因很简单,(在我的理解)只与Hibernate工具本身,不与任何架构问题连接。 Hibernate需要组件类具有默认的无参数构造函数,并且无法实例化内部类(虽然它接受映射成功)。我希望这个特性在未来的Hibernate版本中得到支持。
JPA规范说:
嵌入类必须坚持在与嵌入类不标注为实体的例外重刑实体2.1节规定的要求。
和2.1节说:
实体类必须是顶级类。
它似乎是hibernate忽略JPA关于嵌入式的推荐 –