为了对表进行非规范化,我创建了一个类的层次结构。表格非常广泛,以便管理麻烦和错误,我想声明父级中的所有字段,然后更改子级中特定字段的定义。通过这种方式,我可以将父级中的普通列重新定义为子级中主键的一部分。
E.g:
基础超类
public class A {
@Column
protected int age;
}
类扩展A
@Table
public class B extends A {
@PrimaryKey
protected K key;
...
}
A的主键,其中包含age
列的新定义。
@PrimaryKeyClass
public class K {
@PrimaryKeyColumn
private int age;
@PrimaryKeyColumn
private int ignore;
}
这似乎不起作用。我收到Multiple definition of identifier
例外。
到目前为止,我只能声明在父级中不会发生变化的字段,然后在每个子级中声明所有可能更改的字段。我不喜欢这样,因为我必须事先知道可能成为未来主键一部分的每个字段。
将注释放在(父)getter上并覆盖它们似乎没有做任何事情。
除了在父级中只保留永不改变的列之外,还有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
将注释放在(父)getter上并覆盖它们似乎没有做任何事情。
用@Transient注释儿童的吸气者!
所以:注释父getter而不是字段,让child getters @Transient,将列定义移动到键中,完成。
从这里开始:
http://docs.datastax.com/en/developer/java-driver/3.1/manual/object_mapper/creating/
注释getter方法的一个强大优势是注释是从超类和超接口中的重写方法继承的;换句话说,如果在子类中重写了getter方法,则两个方法声明中的注释将合并在一起。如果在此合并过程中发现重复注释,则覆盖方法的注释将优先于重写注释。