我有一个liferay实体(日志表),它有一个由Liferay Service Builder(service.xml)自动生成的主键。 但是现在外部应用程序需要将条目添加到同一个数据库表中。
看看这个要求我只看到两个选项来实现这个目标:
答案 0 :(得分:1)
您的问题的答案直接在xml文档说明中。
第二种实现生成的标识符仅在不存在时才是唯一的 其他进程是将数据插入到同一个表中。这个实现应该 不能在群集环境中使用,但它确实适用于所有受支持的环境 数据库。
示例强>
<column
name="id"
type="Integer"
primary="true"
id-type="increment"
/>
第三种实现使用标识列生成主键。在此实现中,为此实体生成的create table SQL将 创建一个标识列,无论何时本机自动生成主键 插入发生。此实现仅受DB2,MySQL和 MS SQL Server。
示例强>
<column
name="id"
type="Integer"
primary="true"
id-type="identity"
/>
很难获得的信息是如何在生成的 persistenceImpl 类中覆盖create方法。在Liferay中创建代理键时,通常使用CounterLocalService来递增。但是,当您的密钥由数据库处理时,您需要将0作为参数发送。
public SoftwareKey createSoftwareKey() {
return softwareKeyPersistence.create(0);
}
答案 1 :(得分:0)
你的第一点不是一个好主意,主键完全由Liferay管理。
然而,你的第二点是完成你想要的正确方法,看看here。