我有一个数据库,这是两个应用程序的共同点,其中一个是在liferay上运行,另一个是在spring boot上运行。我在两个应用程序的一个表中插入值(主键设置为自动递增)。
我在ServiceBuilder中有以下内容
<entity name="EntityName" local-service="true" remote-service="false" cache-enabled="false">
<column name="coloumnName" type="long" primary="true" id-type="increment" />
现在,当应用程序试图在表中插入值时,会出现重复主键错误。有人有办法吗?
1条答案
按热度按时间ukdjmx9f1#
id-type="increment"
确实用于自动递增字段。来自文档非常丰富的ServiceBuilderDTD中的使用说明:(emphasis mine)id type和id param值用于在表中插入记录时创建自动生成、自动递增的主键。这可以通过4种不同的方式实现,具体取决于所使用的数据库类型。在所有情况下,应该为模型对象的主键分配一个null值,hibernate将知道用自动生成的、自动递增的值替换null值。如果没有使用id type值,则假定主键将被分配而不是自动生成。
如果您遵循在将新对象插入数据库之前手动设置主键的任何其他代码示例,则将为id选择该值。由于您必须使用service builder实现粘合代码的某些部分,因此很有可能您已经在某个位置设置了主键。
如果传递null作为键,则在插入后将返回自动增量值。