Я с помощью 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() он будет равен нулю. Другие столбцы (непосредственно сопоставленные) отлично.
Спасибо,
Гордон
Поддержка отображения перечислений в CacheJdbcPojoStore была объединена с мастером –