【发布时间】:2017-01-16 16:29:53
【问题描述】:
我要使用 CacheJdbcPojoStoreFactory
我想在数据库中有一个 VARCHAR 字段映射到 Java 中的枚举。
我试图实现这一点的方式类似于以下内容。我希望应用程序代码与枚举一起工作,但要持久使用字符串,以便它在数据库中是人类可读的。我不想在数据库中使用 int 值。
这似乎适用于创建新对象,但不适用于读出它们。似乎它试图直接设置字段,并且没有调用setter(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,并调用 trade.getSide() 它将为空。其他(直接映射的)列很好。
谢谢,
戈登
【问题讨论】:
标签: ignite