Java 在Hibernate中使用预定义前缀填充Id列

Java 在Hibernate中使用预定义前缀填充Id列,java,sql,oracle,hibernate,Java,Sql,Oracle,Hibernate,我正在从事JavaWeb项目,必须在表中插入用户记录 用户表中的ID列值需要添加前缀,这意味着我们必须向序列生成的值添加类似“user”的前缀,以获得ID列的最终值“user00001”,这是插入到表中的每个新记录的主键 我已经创建了一个序列和DB触发器,用于在DB中插入任何记录时填充ID列,以满足上述要求。我正在使用oracle11gdb 在我的Web应用程序中,我必须使用Hibernate来执行与数据库相关的任务,如插入、更新 我的表有以下xml配置 <hibernate-mappin

我正在从事JavaWeb项目,必须在表中插入用户记录

用户表中的ID列值需要添加前缀,这意味着我们必须向序列生成的值添加类似“user”的前缀,以获得ID列的最终值“user00001”,这是插入到表中的每个新记录的主键

我已经创建了一个序列和DB触发器,用于在DB中插入任何记录时填充ID列,以满足上述要求。我正在使用oracle11gdb

在我的Web应用程序中,我必须使用Hibernate来执行与数据库相关的任务,如插入、更新

我的表有以下xml配置

<hibernate-mapping>
<class name="UserProfile" table="USER_PROFILE">
    <id name="id" type="string">
        <column name="id"/>
        <generator class="sequence">
            <param name="sequence">USER_PROFILE_SEQ</param>
        </generator>
    </id>
    <property name="firstName" type="string" column="FIRST_NAME"/>
    <property name="middleName" type="string" column="MIDDLE_NAME"/>
    <property name="lastName" type="string" column="LAST_NAME"/>
</class>
</hibernate-mapping>
Hibernate正在使用我在xml映射中分配的序列并获取值,但不是将id列值填充为序列号,而是希望它获取DB触发器生成的值,DB触发器获取序列值并在表中插入记录之前向其添加前缀,如“user”

所以我的问题是如何用触发器生成的值填充hibernate中的Id列?由于我不熟悉Hibernate,我下载了最新的Hibernate版本4.2.7发行版。如有任何帮助,将不胜感激

注意:我不能按照应用程序团队的要求删除触发器。

这篇文章对您有帮助吗

在这篇文章中提供了自定义生成器类,它允许数据库分配id

映射将如下所示:

<id name="id" type="string">
    <column name="id"/>
    <generator class="jpl.hibernate.util.TriggerAssignedIdentityGenerator" />
</id>


感谢您的链接,我将查看它,但我正在研究Hibernate版本4.2.7,在那篇文章中,它是为3.6版本开发的。我仍将查看它。我查看了Hibernate论坛,并将相同的代码更新到Hibernate 4。以下是相同的链接:它对我的案例很有效。
<id name="id" type="string">
    <column name="id"/>
    <generator class="jpl.hibernate.util.TriggerAssignedIdentityGenerator" />
</id>