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