【发布时间】:2020-12-23 10:24:49
【问题描述】:
我在 Spring Boot 应用程序中使用两个镜像数据库模式,并在启动时进行 Flyway 迁移:内存中 H2 - 用于 demo 配置文件,Postgres - 用于prod。在每个模式中,都有一个 reset_token 字段,其定义如下:
CREATE TABLE users(
...
reset_token CHAR(36)
);
问题在于 Hibernate 期望使用两个不同的注释将我的 User 实体中的字符串属性正确映射到相应的表列:@Column(columnDefinition = "char") - 用于 H2 和 @Column(columnDefinition = "bpchar") - Postgres。我怎样才能做到这一点?我的意思是,是否可以根据活动配置文件设置columnDefinition 属性的值,以便不为每个配置文件创建两个不同的User 实体?
@Data
@NoArgsConstructor(access = AccessLevel.PRIVATE, force = true)
@RequiredArgsConstructor
@Entity
@Table(name = "users")
public class User {
...
@Column(columnDefinition = "char")
// @Column(columnDefinition = "bpchar")
private final String resetToken;
}
【问题讨论】:
标签: java postgresql spring-boot jpa h2