簡體   English   中英

Java Cassandra 4.x 映射器能否將 Enum 轉換為 int?

[英]Can the Java Cassandra 4.x mapper convert an Enum to an int?

我有一個非常簡單的枚舉

public enum Axis {
  X, Y, Z;
}

我曾經使用EnumOrdinalCodec 3.x 驅動程序將其保存到數據庫中的一個int中。 使用 4.x 我得到一個錯誤

CQL ks.table: [snip] 在實體 class 中定義:[snip] 聲明編解碼器注冊表不支持的類型映射:字段:axis,實體類型:[snip].Axis,CQL 類型:INT

我找不到任何可用於告訴驅動程序如何 map 枚舉的注釋。 唯一的鈎子似乎是MapperResultProducer ,我無法理解也找不到它的例子。

有沒有比手動將枚舉映射到其序號更好的方法?

此功能從 Java 驅動程序 4.8 開始恢復 - 有一個新的ExtraTypeCodecs class ,其中包含其他編解碼器。 您需要使用function ExtraTypeCodecs.enumOrdinalsOf(Class)返回的編解碼器。 (但請參閱那里的評論,最好不要使用它,因為如果您錯誤地更改枚舉,數字可能會更改)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM