@PrimaryKeyColumn注释必须具有scala Cassandra Spring Data应用
发布时间:2020-12-16 09:56:13 所属栏目:安全 来源:网络整理
导读:我正在使用 Scala处理Cassandra Spring数据模块.我创建了领域模型设置crud存储库. Spring数据存储库的设置如下: @Repositorytrait SampleRepository extends CassandraRepository[Sample,SampleKey] 表域模型设置如下: @Table case class Sample(@PrimaryK
我正在使用
Scala处理Cassandra Spring数据模块.我创建了领域模型&设置crud存储库.
Spring数据存储库的设置如下: @Repository trait SampleRepository extends CassandraRepository[Sample,SampleKey] 表域模型设置如下: @Table case class Sample(@PrimaryKey sampleKey: SampleKey,@Column("surName") surName: String) 主键是复合键. Id列作为分区键.将列命名为Cluster key @PrimaryKeyClass case class SampleKey( @PrimaryKeyColumn( `type` = PrimaryKeyType.PARTITIONED,ordinal = 0,name = "id") id: Int,@PrimaryKeyColumn( `type` = PrimaryKeyType.CLUSTERED,ordinal = 1,name = "name") name: String ) 在scala中,type是一个有效的关键字,因此使用了后向引号.我期待这个工作,但当我启动应用程序,但我得到 Suppressed: org.springframework.data.mapping.MappingException: Composite primary key type [com.barclays.decisionstore.trac.model.SampleKey] has no fields annotated with @PrimaryKeyColumn at org.springframework.data.cassandra.core.mapping.PrimaryKeyClassEntityMetadataVerifier.verify(PrimaryKeyClassEntityMetadataVerifier.java:91) ... 262 common frames omitted Suppressed: org.springframework.data.mapping.MappingException: At least one of the @PrimaryKeyColumn annotations must have a type of PARTITIONED at org.springframework.data.cassandra.core.mapping.PrimaryKeyClassEntityMetadataVerifier.verify(PrimaryKeyClassEntityMetadataVerifier.java:98) ... 262 common frames omitted 这意味着Spring-Data无法识别注释的类型参数. 将不胜感激任何指针或替代解决此问题. 解决方法
实际上java bean属性除注释外无法识别.
在案例类中,默认情况下,Scala不会将实例变量绑定为bean属性.为此,您需要为每个属性添加@BeanProperty注释. import scala.beans.BeanProperty @PrimaryKeyClass case class SampleKey(@BeanProperty @PrimaryKeyColumn(`type` = PrimaryKeyType.PARTITIONED,name = "id") id: Int,@BeanProperty @PrimaryKeyColumn(`type` = PrimaryKeyType.CLUSTERED,name = "name") name: String) 此外,如果您收到对象构造错误,请添加具有默认值的构造函数(这需要使变量var): @PrimaryKeyClass case class SampleKey(@BeanProperty @PrimaryKeyColumn(`type` = PrimaryKeyType.PARTITIONED,name = "id") var id: Int,name = "name") var name: String) { def this() = this(0,"") } 希望这可以帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |