用于两个应用程序的 liferay 单个数据库

liferay single database for two applications

我有一个数据库,它对两个应用程序是通用的,其中一个是 运行 在 Liferay 上,另一个在 spring 引导上。我在两个应用程序的 table 之一( 主键设置为自动递增 )中插入值。

我在服务生成器中有以下内容

<entity name="EntityName" local-service="true" remote-service="false" cache-enabled="false">
<column name="coloumnName" type="long" primary="true" id-type="increment" />

现在,应用程序在尝试将值插入 table 时出现重复主键错误。有人对此有解决方案吗?

id-type="increment" 确实用于自增字段。来自有据可查的 service-builder DTD 中的使用说明:(强调我的)

The id-type and id-param values are used in order to create an auto-generated, auto-incrementing primary key when inserting records into a table. This can be implemented in 4 different ways, depending on the type of database being used. In all cases, the primary key of the model object should be assigned a value of null, and Hibernate will know to replace the null value with an auto-generated, auto-incremented value. If no id-type value is used, it is assumed that the primary key will be assigned and not auto-generated.

如果您遵循在将新对象插入数据库之前手动设置主键的任何其他代码示例,则将为 ID 选择该值。由于您必须使用 Service Builder 实现粘合代码的某些部分,因此您很可能已经在某处设置了主键。

如果传入null作为key,插入后会取回自增值。