我无法理解Annotation“@NoSqlDiscriminatorColumn”的用法。有人可以解释是否总是需要?如果是,为什么? 如果不是,那么在单元测试中,Account扩展了AccountSuper ..它是继承的另一个例子吗?这和TestInheritanceSingleTable中使用的实体有什么区别?
答案 0 :(得分:1)
我们必须存储有关保存哪个子类的信息,所以当我们读回它时,我们使用正确的子类。此信息存储在特定列中(您告诉我们哪个列使用@NoSqlDiscriminatorColumn),因此基本上此模式会添加一个不在您的实体中的列。使用此模式,您可以在同一个表中拥有N个子类。
帐户扩展AccountSuper并不特别。这不是在同一个表中存储不同的实体。那只是存储账户。它恰好发生了Account扩展AccountSuper,因此它将任何字段存储在Account和AccountSuper中的任何字段中,因此Account表中的所有行通常都具有相同的大小。在继承示例中,我们存储不同的实体,因此这些不同的实体可能会导致不同的行长度,因为每个实体都有不同的列数。