在hibernate继承映射中,JPA table-per-class策略,
根实体不需要表来映射,
子实体做,每个子实体都有一个表。
在我的理解中,一个实体是:一个带有映射配置的java类,应该映射到一个表,
那么根实体如何作为没有表映射的实体存在?
如果不需要表来映射,为什么我们不使用@mappedSuperclass?
我们可以使用这个根实体来查询吗?
最佳答案
如果您不想拥有根实体的实例,则根实体不需要表。
例如,如果您有一个 Message 基类,它有两个子类 Email 和 VoiceMessage,并且只需要 Email 和 VoiceMessage 的实例,则没有理由为 Message 创建一个表,因为您永远不会创建任何 Message 实例:仅限电子邮件或语音消息。
它与 MappedSuperclass 的不同之处在于,您仍然可以与基类 Message 建立 toOne 或 toMany 关联。例如,您可以有一个发送者实体,其中包含一组已发送的消息。您可以在根消息实体上创建查询。此类查询当然会返回 VoiceMessage 或电子邮件的实例。
关于java - 关于hibernate继承映射,为什么实体可以没有表而存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24934535/