Как вставить в поле варианта снежинки, используя DAO? - PullRequest
0 голосов
/ 27 июня 2019

У меня есть следующий код:

@RegisterMapper(MyEntity.ResultMapper.class)
@UseStringTemplate3StatementLocator
public interface MyDao {

    @Transaction(TransactionIsolationLevel.SERIALIZABLE)
    @SqlBatch("INSERT INTO mySchema.myTable (" +
        " id, entity_type, entity_id, flags " +
        " ) VALUES " +
        "(" +
        " :stepId , :entityType , :entityId,parse_json(:flags) " +
        ")")
    @BatchChunkSize(500)
    Object create( @BindBean List<MyEntity> entities );
}

Как видите, я массово вставляю список сущностей в мою таблицу Snowflake, используя этот DAO.

Проблема в том, что яя не могу вставить в столбцы флагов, который является вариантом.Я попытался to_variant(:flags) и в настоящее время parse_json(:flags), но JDBI продолжает выдавать следующую ошибку:

net.snowflake.client.jdbc.SnowflakeSQLException: SQL 
compilation error:
Invalid expression [PARSE_JSON(?)] in VALUES clause 
[statement:"INSERT INTO mySchema.myTable ( id, entity_type, 
entity_id, flags  ) VALUES ( :stepId , :entityType , :entityId,
parse_json(:flags) )", located:"null", rewritten:"null",
arguments:{ positional:{}, named:{timeStamp:'null', 
entityType:MYENTITY,
flags:'{"client":"myClient","flow":"myFlow"}',stepId:null, 
entityId:'189643357241513', class:class myOrg.MyEntity}, finder:[]}]

Как передать значение в столбце флаги?Кто-нибудь пытался сделать это раньше?Поле flags в MyEntity находится под моим контролем, я могу сохранить его как POJO или строку, в зависимости от того, что поможет мне решить эту проблему.

...