Jam*_*Hao 6 mysql liquibase jhipster
我的应用程序使用 jhipster 和 mysql 和 liquibase,mysql 版本是 5.7.20,支持 json 列,我使用ObjectMapper映射 json 列和 java 对象,它可以工作,列类型是 json,但是当涉及 liquibase 时( ./mvnw package -Pprod dockerfile:build),会出现“unknown data type 'JSON'”之类的异常,测试会失败,不会生成docker镜像。
我在 20180410012441_added_entity_Ability.xml 中对该 json 列进行了一些更改:
<column name="abilities" type="json">
<constraints nullable="true"/>
</column>
Run Code Online (Sandbox Code Playgroud)
在我的域类中,json相关字段如下:
@Type(type = "json")
@Column(columnDefinition = "json")
private List<Skill> abilities = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
我怀疑问题与 xml 列/类型定义有关,liquibase 不支持 json 关键字,我不知道正确的类型应该有什么。
有人可以帮忙吗?非常感激。
=================================================== ======= 北京时间 9:01 PM 更新 我添加了一个changeSet为“
<changeSet id="20180415081741-1" author="jhipster">
<sql dbms="mysql" endDelimiter="\nGO" splitStatements="true"
stripComments="true">ALTER TABLE `ability` ADD `abilities` json DEFAULT NULL</sql>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
然后我发出“./mvnw package -Pprod dockerfile:build”,这是另一个看似与休眠相关的异常:
2018-04-15 20:56:52.186 ERROR 23936 --- [ main] o.h.metamodel.internal.MetadataContext : HHH015007: Illegal argument on static metamodel field injection : com.james.app.domain.Ability_#abilities; expected type : org.hibernate.metamodel.internal.SingularAttributeImpl; encountered type : javax.persistence.metamodel.ListAttribute
Run Code Online (Sandbox Code Playgroud)
小智 1
将 liquibase 列类型更改为jsonb并尝试。
<column name="abilities" type="jsonb">
<constraints nullable="true"/>
</column>
Run Code Online (Sandbox Code Playgroud)
添加类型和列定义为jsonb。
@Type(type = "jsonb")
@Column(columnDefinition = "jsonb")
private List<Skill> abilities = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13799 次 |
| 最近记录: |