【发布时间】:2010-01-15 05:28:06
【问题描述】:
create table A (id, col_A, col_B, col_C)
id = 唯一 ID 对于被持久化的每一行,col_A 或 col_B 都会有一个有效值,但两列不会同时为每个持久化的行提供一个值。
例如
insert into A (id, col_A, col_C) values (1, "a", "c")
insert into A (id, col_B, col_C) values (1, "b", "c")
insert into A (id, col_A, col_C) values (1, "aa", "cc")
insert into A (id, col_B, col_C) values (1, "bb", "cc")
注意:根据设计,col_A 和 col_B 不能合并到一个列中。
我想根据上述限制对 col_A 和 col_B 强制执行条件非空检查(即,对于每一行,至少 col_A 或 col_B 应该存在)。我如何做到这一点?
编辑:
- 我们希望从 H2、MySQL、Postgres 开始支持以下数据库
- 我们还希望通过 JPA 注释而不是特定于数据库的语法来表达约束
- 底层 ORM 层是 Hibernate 3.3.x
【问题讨论】:
标签: sql hibernate database-design jpa