簡體   English   中英

通過Postgres后端數據轉換點燃直寫

[英]Ignite write-through with Postgres backend data conversion

我正在將Apache Ignite和Postgres設置為持久存儲。 在postgres中,我具有JSON和Array列,因此我實現了自定義轉換器,以將所有非原始的內容都轉換為JSON字符串。 這是代碼:

public class PostgresTransformer extends JdbcTypesDefaultTransformer {

    @Override
    public Object getColumnValue(ResultSet rs, int colIdx, Class<?> type) throws SQLException {
        if (type == ArrayOfFloat.class) {
            Array raw = rs.getArray(colIdx);
            ArrayOfFloat obj = new ArrayOfFloat(raw);
            return obj.toString();
        }

        if (type == ArrayOfInt.class) {
            Array raw = rs.getArray(colIdx);
            ArrayOfInt obj = new ArrayOfInt(raw);
            return obj.toString();
        }

        if (type == ArrayOfString.class) {
            Array raw = rs.getArray(colIdx);
            ArrayOfString obj = new ArrayOfString(raw);
            return obj.toString();
        }

        if (type == JSON.class) {
            String raw = rs.getString(colIdx);
            JSON obj = new JSON(raw);
            return obj.toString();
        }

        return super.getColumnValue(rs, colIdx, type);
    }
}

main-server.xml我還使用以下相應配置:

<property name="transformer">
     <bean class="com.mycorp.ignite.transformers.PostgresTransformer"/>
</property>

<bean class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
      <constructor-arg>
            <util:constant static-field="java.sql.Types.OTHER"/>
      </constructor-arg>
      <constructor-arg value="neighbourhood_stats"/>
      <constructor-arg value="com.mycorp.ignite.types.JSON"/>
      <constructor-arg value="neighbourhoodStats"/>
</bean>

這對我來說很適合閱讀。 我的問題是:當我通過Wright-through將數據保存回DB時,如何將其轉換回有效的Postgres數據類型? 轉換器中沒有setColumnValue方法。 getColumnValue 謝謝!

在這種情況下,我認為您不應該使用CacheJdbcPojoStore 只需創建自己的CacheStore接口實現,然后在其中執行所有必需的轉換即可。

暫無
暫無

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

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