Liferay Service Builder自动增量计数器

时间:2017-07-26 10:13:42

标签: liferay liferay-6 liferay-service-builder

我正在为每个插件portlet使用liferay服务构建器jar。所以,当我必须插入一个新的记录。我使用下面的代码来插入记录。

XXX xxx = XXXLocalServiceUtil.createXXX(CounterLocalServiceUtil.increment(XXX.class.getName()));
xxx.setValue(value);
XXXLocalServiceUtil.addXXX(xxx);

每个表都有一个带自动增量的主键。但计数器本地服务util将计算其自己的计数器值。我需要每个插入的主键值。但在这种情况下,如果第一个记录是插入。将插入1作为记录,但liferay计数器将根据部署返回101或201.

这很好用

XXX xxx = new XXXImpl();
xxx.setValue(value);
XXXLocalServiceUtil.addXXX(xxx);

我按照hibernate获得了确切的密钥。但我不能用这个。因为我使用的是服务构建器的jar文件而且没有Impl类。

Service Builder xml文件:

<entity name="XXX" local-service="true"
remote-service="false">
<column name="id" type="long" id-type="increment" primary="true"></column> 
<column name="value" type="String" ></column></entity>

另一种解释方法:

您好, 我正在使用服务构建器来访问我的所有插件portlet。我有自定义表,主键具有自动增量。 截至目前,我知道有一些方法可以将记录插入表格。

XXX xxx = XXXLocalServiceUtil.createXXX(0); 
xxx.setValue(value);
XXXLocalServiceUtil.addXXX(xxx);

OR

XXX xxx = XXXLocalServiceUtil.createXXX(CounterLocalServiceUtil.increment()); // Global increment
xxx.setValue(value);
XXXLocalServiceUtil.addXXX(xxx);

OR

XXX xxx = XXXLocalServiceUtil.createXXX(CounterLocalServiceUtil.increment(XXX.class.getName())); // Increment table specific
xxx.setValue(value);
XXXLocalServiceUtil.addXXX(xxx);

首先,如果我想获得promary键值,我得到0,第二个长值,第三个递增值wrt表名。 我正在使用它。现在,如果我重新部署服务或portlet计数器值将增加101,201,... 这可以通过设置counter.increment.xxx.Class = 1或counter.increment = 1来处理。

但我只想从“xxx”获取数据库表增量值。所以有办法做到这一点。 像这样:

XXX xxx = new XXXImpl();
xxx.setValue(value);
XXXLocalServiceUtil.addXXX(xxx);

在这里,我可以从数据库表中获取我想要的值。

1 个答案:

答案 0 :(得分:1)

找到解决方案:

XXX xxx = XXXLocalServiceUtil.createXXX(0); 
xxx.setValue(value);
xxx = XXXLocalServiceUtil.addXXX(xxx);

现在我们在xxx中有增量值。我们只需要重新分配对象。