如何解决使冬眠实体与Postgres和sqlite一起用于json字段
需要在远程设备(以sqlite为后盾)以及云(以postgres为后盾)上运行相同版本的应用程序。帐户实体如下:
@Entity
@Table(name="account")
public class Account extends BaseEntity{
@Id
@Column(name="id")
private String id;
@Column(name="valid_from")
private LocalDateTime validFrom;
@Column(name="expires_on")
private LocalDateTime expiresOn;
@Column(name="events")
@Convert(converter = EventListConverter.class)
@NotNull
@NotEmpty
private List<Event> events;
EventListConverter
正在将events
转换为JSON字符串,然后将其转换为sqlite的List<Event>
。但是,在Postgres上,events
列的类型为jsonb
-我们如何才能使其同时适用?
约束: 不能更改POSTGRES模式(尽管sqlite中的事件可以更改为二进制)
解决方法
我想问题是生成的DDL是因为您使用hbm2ddl更新吗?
我建议您通过Liquibase或Flyway之类的工具进行模式更新,因为这些工具可以为每个DBMS定义DDL。如果确实必须使用hbm2ddl,则可以将Dialect
实现的子类化,并提供自定义的TableExporter
。您需要复制StandardTableExporter
的一部分,但这是可行的,您可以将列类型重新映射到您认为更合适的位置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。