Corda 枚举序列化和 PersistentState
Corda enums serialization and PersistentState
我使用 Corda 4.1 和 kotlin。我的目标是使用 Persistence API 将一些数据存储到 Corda 数据库,然后进行一些查询(我遵循文档 https://docs.corda.net/api-persistence.html )。我在查询枚举类型时遇到了小问题。
这个枚举
@CordaSerializable
enum class MyEnum {
A,
B,
C
}
作为整数值存储在数据库中table
0
1个
2个
而且看起来A对应0,B对应1,C对应2.
但我没有看到任何明确的映射。什么规则用于序列化枚举值?可以用一些注释来改变它们吗?
有什么简单的方法可以确保 A 枚举值在数据库中始终保存为 0 吗?是否可以直接保留 "A"、"B"、"C" 而不是数字?
我可以在 generateMappedObject 函数中手动实现这个逻辑,但我很好奇什么是正确的方法
参见 Kotlin 规范中的此处:https://kotlinlang.org/docs/reference/enum-classes.html#working-with-enum-constants
序数按照它们在枚举中声明的顺序分配,您可以通过调用 MyEnum.A.ordinal
以编程方式访问序数
看起来没有任何简单的方法可以像在 C# 中那样显式分配序数,您可以在其中说 enum { A = 2, B = 1, C = 0 }
您还可以通过将映射实体中的列定义为以下内容来告诉 Hibernate 将映射持久保存为字符串:
@Entity
@Table(name = "table_containing_en_enum"
class MyClass {
@Column(name = "enum")
@Enumerated(EnumType.STRING)
val enum: MyEnum,
...
}
我使用 Corda 4.1 和 kotlin。我的目标是使用 Persistence API 将一些数据存储到 Corda 数据库,然后进行一些查询(我遵循文档 https://docs.corda.net/api-persistence.html )。我在查询枚举类型时遇到了小问题。
这个枚举
@CordaSerializable
enum class MyEnum {
A,
B,
C
}
作为整数值存储在数据库中table 0 1个 2个 而且看起来A对应0,B对应1,C对应2.
但我没有看到任何明确的映射。什么规则用于序列化枚举值?可以用一些注释来改变它们吗?
有什么简单的方法可以确保 A 枚举值在数据库中始终保存为 0 吗?是否可以直接保留 "A"、"B"、"C" 而不是数字?
我可以在 generateMappedObject 函数中手动实现这个逻辑,但我很好奇什么是正确的方法
参见 Kotlin 规范中的此处:https://kotlinlang.org/docs/reference/enum-classes.html#working-with-enum-constants
序数按照它们在枚举中声明的顺序分配,您可以通过调用 MyEnum.A.ordinal
看起来没有任何简单的方法可以像在 C# 中那样显式分配序数,您可以在其中说 enum { A = 2, B = 1, C = 0 }
您还可以通过将映射实体中的列定义为以下内容来告诉 Hibernate 将映射持久保存为字符串:
@Entity
@Table(name = "table_containing_en_enum"
class MyClass {
@Column(name = "enum")
@Enumerated(EnumType.STRING)
val enum: MyEnum,
...
}