mysql - 用于两个应用程序的 liferay 单一数据库
问题描述
我有一个数据库,该数据库对于两个应用程序是通用的,其中一个在 Liferay 上运行,另一个在 Spring Boot 上运行。我正在从两个应用程序的一个表中插入值(主键设置为自动递增)。
我在服务生成器中有以下内容
<entity name="EntityName" local-service="true" remote-service="false" cache-enabled="false">
<column name="coloumnName" type="long" primary="true" id-type="increment" />
现在,应用程序尝试在表中插入值时出现重复主键错误。有人对此有解决方案吗?
解决方案
id-type="increment"
确实用于自增字段。从非常有据可查的服务构建器 DTD中的使用说明:(强调我的)
id-type 和 id-param 值用于在向表中插入记录时创建自动生成、自动递增的主键。这可以通过 4 种不同的方式实现,具体取决于所使用的数据库类型。在所有情况下,模型对象的主键都应该分配一个 null 值,Hibernate 会知道用自动生成的、自动递增的值替换 null 值。如果没有使用 id-type 值,则假定将分配主键并且不会自动生成。
如果您遵循在将新对象插入数据库之前手动设置主键的任何其他代码示例,则将为 ID 选择该值。由于您必须使用 Service Builder 实现胶水代码的某些部分,因此您很有可能已经在某处设置了主键。
如果您将 null 作为键传递,您将在插入后取回自动增量值。
推荐阅读
- sockets - ZVT 终端交易被 ECR 拒绝
- mongodb - 使用 Spring Boot 从 Mongodb 获取嵌套列表
- javascript - 按下提交后插入的值消失
- c# - 使用 ASP.NET Core MVC 将带有文件的数据发布到 api (ASP.NET Core Web API)
- android - 在 Android 5.x 和 4.x w 上找不到证书路径的信任锚。让我们在服务器上加密
- go - golint 执行不返回任何内容
- wso2 - 如何在 API 3.0.0 和 BPS 中配置用户注册工作流程?
- haskell - 创建包含列表的数据类型并在其上定义函数
- redis - redisearch FT.SEARCH 的搜索复杂度?
- python - Python 3.8 下 mpmath 有问题,但在 2.7 下可以