我有一个要求,我需要同时支持 Oracle 和 PostgreSQL。我有以下休眠映射 -
<id name="id" type="java.lang.Integer">
<column name="id" not-null="true" />
<generator class="native">
<param name="sequence">`OneTimeAccessToken_id_seq`</param>
</generator>
</id>
<property name="resource" type="java.lang.String">
<column name="`res`" not-null="true" />
</property>
<property name="expires" type="long">
<column name="`expires`" not-null="true" />
</property>
然而,这对 Oracle 不起作用,因为它有那个反引号。如果我删除反引号,则 PostgreSQL 将失败。关于如何为这两个数据库提供支持的任何输入。
我用org.hibernate.dialect.Oracle10gDialect
的是Oracle 11.2版本,对吗?
我的问题是反引号而不是使序列在数据库之间兼容。我已经做到了。我在 hbm 文件中使用反引号使 PostgreSQL 根据我指定的字符大小写创建表/列。如果我删除这些反引号,PostgreSQL 会将所有内容都转换为小写。现在有了反引号,PostgreSQL 一切正常,但是,它与 Oracle 产生问题,说它找不到表或视图:“OneTimeAccessToken”。我试图确定我应该如何解决维护表/列名称案例的问题,并使其适用于 Oracle。