我想基于JPA定义生成数据库模式,以便它可以在Oracle和PostgreSQL中正常工作。这两个DBMS中的布尔数据类型不同。各个Hibernate的方言正确地将java.lang.Boolean映射到Oracle中的NUMERIC(1,0)和PostgreSQL中的BOOLEAN。但是,@ ColumnDefault对于这两者都会保持不变,这会导致问题-“ false”不适用于Oracle或“ 0”不适用于PostgreSQL。有没有办法在一般情况下设置它,使其适用于任何DBMS?有没有像覆盖方言一样的技巧?我想在数据库杠杆上定义它,所以@PreUpdate或@PrePersist不是一个选择。
@Basic
@Column(name = "active", nullable = false)
@ColumnDefault("0")
private Boolean active = false;