如何让Cassandra,Spring Boot为实体调用field setter?
问题描述:
我有一个实体,它是由一个存储库从Cassandra中抓取的。在Spring/Cassandra设置某些托管字段时,我需要设置一些自定义字段。如何让Cassandra,Spring Boot为实体调用field setter?
但是,当我尝试将主键指示符放在getter方法(类似于JPA)上时,它不使用这些方法。如何在设置字段时调用它们?
@Table(name="entity")
public class MyEntity {
private String calculatedField;
private CompoundKey pk;
...elided...
@PrimaryKey
public void setPk(CompoundKey pk) {
this.pk = pk;
//do some calculations...
this.calculatedField = pk.getField() + val;
}
}
这始终将calculatedField
留为空。
答
The AccessType
annotation is exactly for that purpose. 你的实体应该是这样的:
@AccessType(Type.PROPERTY)
public class MyEntity {
//...
}
这是答案,但你可以更新的答案,以指定它需要的类像这样放:'@AccessType(类型。 PROPERTY)public class MyEntity'(但显然有换行符) –