为我的实习工作准备一个JPA2.0合规工具包。这个工具箱的一部分是用来盖住角落的箱子。@MappedSuperclass没有原始表,因为它不是实体。jsr-317陈述了这个有趣的部分:与MappedSuperclass注释指定的类可以以与实体相同的方式映射,除了映射仅适用于它的子类之外,因为映射超类本身不存在表。“因为映射过的超类本身没有表存在。”这是否意味着“没有默认值”—如果您愿意,可以创建自己的表,但它不能自己检索?或者这是否意味着“没有映射的超类存在”-您不允许创建一个(用 >)?根据jpa 2.0,是否允许将a@SecondaryTable的一部分映射到a@MappedSuperclass? (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 我不确定您的意思是在mapped super类中有@secondarytable注释,还是将mapped super class中定义的属性持久化到派生映射的实体中的@secondarytable表中,所以我尝试同时回答这两个问题。映射的超类没有自己的表。上下文被映射使用超类定义表。这是有意义的,因为否则从一个映射的超类继承多个实体的映射总是需要在除了一个派生实体之外的所有其他对象中重写表的名称。我认为“映射超类中没有表存在”也关闭了“@二次表”。JPA2.0规范第12.3章中给出的XML模式也不允许映射的超级类使用辅助表。但是,在实体中使用@attributeoverride的column元素将从映射超类派生的属性持久化到实体的二级表应该是可以的。规范中没有任何内容可以反驳这种情况。因此,我认为“映射超类不能存在表”是真实的,但是没有任何东西阻止您将这些属性放置到实体的辅助表中。关于列的表的决定发生在派生属性和关联映射的实体中,而不是在映射的超类本身中。 (adsbygoogle = window.adsbygoogle || []).push({});
09-30 11:31