有没有办法通过继承使用 Cassandra datastax 映射器?
Is there any way to use Cassandra datastax mapper with inheritance?
我正在使用cassandra java datastax 2.1
;我一直在尝试使用它的映射器 class 来保存一个 class,它是其他 class 的子 class,我很难弄清楚。
到目前为止我发现如果 classB
是 classA
的子 class,并且如果我试图使用映射器保存 classB
那么:
- 所有分区键字段都应在子class中,即
classB
。
- 仅保存
classB
中的字段。
我是不是做错了什么,或者没有办法使用 Java datastax
驱动程序的继承?
我也在这里问过这个问题:
我找到了我在相应工单中提出的解决方案:
https://datastax-oss.atlassian.net/browse/JAVA-541
因此您需要将 com.datastax.driver.mapping.AnnotationParser
class 导入您的项目(覆盖现有的 class)并更改第 74 行
for (Field field : entityClass.getDeclaredFields())
到
for (Field field : entityClass.getFields())
如果这是一个好的、防弹的或持久的解决方案,我不能保证,但对于我的用例,它完成了工作。
如果您对此类功能的官方实施感兴趣,请投票 (https://datastax-oss.atlassian.net/browse/JAVA-541)。
我正在使用cassandra java datastax 2.1
;我一直在尝试使用它的映射器 class 来保存一个 class,它是其他 class 的子 class,我很难弄清楚。
到目前为止我发现如果 classB
是 classA
的子 class,并且如果我试图使用映射器保存 classB
那么:
- 所有分区键字段都应在子class中,即
classB
。 - 仅保存
classB
中的字段。
我是不是做错了什么,或者没有办法使用 Java datastax
驱动程序的继承?
我也在这里问过这个问题:
我找到了我在相应工单中提出的解决方案: https://datastax-oss.atlassian.net/browse/JAVA-541
因此您需要将 com.datastax.driver.mapping.AnnotationParser
class 导入您的项目(覆盖现有的 class)并更改第 74 行
for (Field field : entityClass.getDeclaredFields())
到
for (Field field : entityClass.getFields())
如果这是一个好的、防弹的或持久的解决方案,我不能保证,但对于我的用例,它完成了工作。
如果您对此类功能的官方实施感兴趣,请投票 (https://datastax-oss.atlassian.net/browse/JAVA-541)。