не в состоянии выучить класс в корде 4? - PullRequest
0 голосов
/ 04 марта 2019

Привет! Я использовал этот пример https://docs.corda.net/serialization.html#whitelisting для внесения в белый список класса java.sql.timestamp вручную, но все равно я получаю эту ошибку:

"No unique deserialisation constructor found for class class java.sql.Timestamp, type is marked as non-composable
E 10:05:59 80 SerializationOutput.log - Serialization failed direction="Serialize", type="java.sql.Timestamp", msg="Class "class java.sql.Timestamp" is not on the whitelist or annotated with @CordaSerializable.", ClassChain="java.util.List<*> -> java.sql.Timestamp"
   E 10:05:59 80 RestController.createIOU - Class "class java.sql.Timestamp" is not on the whitelist or annotated with @CordaSerializable"

вот мой код белого списка:

class TradingAppSerializationWhitelist : SerializationWhitelist {
    // Add classes like this.
    override val whitelist = listOf(Timestamp::class.java)
}

1 Ответ

0 голосов
/ 10 марта 2019

Для такого типа вам нужно написать собственный сериализатор, а не просто белый список типа.

Однако могу ли я спросить, почему вы хотите использовать этот тип специально?Более обычным является использование java.time.Instant для записи времени в бухгалтерской книге, когда вам нужно время для точной обработки, или других типов, таких как java.time.LocalDateTime, для записи времени на человеческие уровни точности (например, «8 вечера вторника», когдачасовой пояс не указан)

Если у вас есть данные, начинающиеся с java.sql.Timestamp, было бы лучше преобразовать их в Instant, так как этот тип имеет гораздо лучший дизайн.

Кроме того, временные метки включены в транзакции по умолчанию.См. Ответ на этот вопрос, чтобы узнать, как В Корде, как получить метку времени, когда произошла транзакция?

...