2017-01-12 2 views
1

Я с помощью CacheJdbcPojoStoreFactoryIgnite CacheJdbcPojoStoreFactory с использованием полого Enum

Я хочу, чтобы иметь поле VARCHAR в базе данных, которая отображает на Enum в Java.

То, как я пытаюсь достичь этого, выглядит следующим образом. Я хочу, чтобы код приложения работал с перечислением, но упорство на использование этой строки, чтобы она была доступна для чтения в базе данных. Я не хочу использовать значения int в базе данных.

Это, похоже, отлично подходит для создания новых объектов, но не для их считывания. Кажется, что он пытается установить поле напрямую, а сеттер (setSideAsString) не вызывается. Конечно, нет поля под названием sideAsString. Должно ли это работать? Какие-либо предложения?

Вот фрагмент кода В некотором коде приложения я хотел бы сделать что-то вроде

trade.setSide(OrderSide.Buy) 

И это будет продолжаться нормально. Я могу прочитать «Купить» в боковом столбце как VARCHAR.

В торговле

private OrderSide side; // OrderSide is an enum with Buy,Sell 
public OrderSide getSide() { 
    return side; 
} 
public void setSide(OrderSide side) { 
    this.side = side; 
} 
public String getSideAsString() { 
    return this.side.name(); 
} 
public void setSideAsString(String s) { 
    this.side = OrderSide.valueOf(s); 
} 

Теперь при настройке магазина, я делаю это

Collection<JdbcTypeField> vals = new ArrayList<>(); 
vals.add(new JdbcTypeField(Types.VARCHAR, "side", String.class, "sideAsString")); 

После чистого старта, если я запрашиваю торговли с помощью Ignite SQL запрос, и вызвать trade.getSide() он будет равен нулю. Другие столбцы (непосредственно сопоставленные) отлично.

Спасибо,

Гордон

ответ

1

BinaryMarshaller десериализации только поля, используемые в запросе.

Пожалуйста, попробуйте использовать OptimizedMarshaller:

IgniteConfiguration cfg = new IgniteConfiguration(); 
... 
cfg.setMarshaller(new OptimizedMarshaller()); 

Вот the ticket для поддержки отображения перечислений в CacheJdbcPojoStore.

+0

Поддержка отображения перечислений в CacheJdbcPojoStore была объединена с мастером –

Смежные вопросы