【发布时间】:2015-07-17 08:57:11
【问题描述】:
我有一张主键生成为TO_NUMBER(TO_CHAR(SYSDATE@!,'YYDDD')||LPAD(TO_CHAR(SEQ_REFID.NEXTVAL),11,'0'))的表
这是表格的默认值。当我通过 JDBC 插入时,我可以将该列保留为 NULL,因此 pk 将被生成/默认,我将使用 getGeneratedKeys() 方法获取密钥。
我需要使用 JPA 的类似行为。我是JPA的初学者。请帮忙。 使用的数据库是 Oracle 11g。
编辑: 上述值不需要是表默认值。如果可能,可以从 JPA 层应用。
其他实体依赖这个实体进行PK。 PK 必须传递给所有子表。
【问题讨论】:
-
这看起来像是一个非常糟糕的数据库设计。有没有理由不使用增加整数的简单 id 列?
-
预计每天的交易数量会以百万计,前缀朱利安日期将有助于从历史表中提取交易。
-
你不应该这样做。使用升序整数创建一个简单的 id 列,并添加一个具有当前 sysdate 的附加列。这就是它应该的样子,不仅简化了您的查询,而且还提高了性能。您还可以在表格中查询特定小时、周等的条目,或生成详细的统计信息。不要试图将不同的数据放入一个单元格中。没有优势。