Я следую этой статье https://vladmihalcea.com/how-to-store-schema-less-eav-entity-attribute-value-data-using-json-and-hibernate/ и сохраняю данные в MySQL, получая следующую ошибку.Я объявил свойства столбец как тип JSON в базе данных
@Type( type = "jsonb-node" )
@Column(columnDefinition = "jsonb")
private JsonNode properties;
и выше - объявление свойств
""2018-10-02 05:33:14 [http-nio-8080-exec-3] DEBUG org.hibernate.SQL -
/* update
com.models.Employee */ update
employees
set
properties=?
where
id=?
""2018-10-02 05:33:14 [http-nio-8080-exec-3] TRACE o.h.type.descriptor.sql.BasicBinder - binding parameter [19] as [OTHER] - [{"title":"High-Performance Java Persistence"}]
""2018-10-02 05:33:14 [http-nio-8080-exec-3] INFO o.h.e.j.b.internal.AbstractBatchImpl - HHH000010: On release of batch it still contained JDBC statements
""2018-10-02 05:33:14 [http-nio-8080-exec-3] WARN o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: S1009
""2018-10-02 05:33:14 [http-nio-8080-exec-3] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - Invalid argument value: java.io.NotSerializableException
""2018-10-02 05:33:18 [http-nio-8080-exec-3] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [/api] threw exception [Request processing failed; nested exception is org.springframework.orm.jpa.JpaSystemException: could not update: [com.hr.models.Employee#171]; nested exception is org.hibernate.exception.GenericJDBCException: could not update: [com.hr.models.Employee#171]] with root cause
"java.io.NotSerializableException: com.fasterxml.jackson.databind.node.ObjectNode
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at com.mysql.jdbc.PreparedStatement.setSerializableObject(PreparedStatement.java:3824)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:3748)
at com.mysql.jdbc.JDBC42PreparedStatement.setObject(JDBC42PreparedStatement.java:99)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:3580)
at com.mysql.jdbc.JDBC42PreparedStatement.setObject(JDBC42PreparedStatement.java:83)
Редактировать: я пытался преобразовать свойства в строку и значениятеперь сохраняются в базе данных, если нет очевидных проблем с этим, я думаю о том, чтобы идти вперед с этим?
private String properties;