我正在为每个插件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);
在这里,我可以从数据库表中获取我想要的值。
答案 0 :(得分:1)
找到解决方案:
XXX xxx = XXXLocalServiceUtil.createXXX(0);
xxx.setValue(value);
xxx = XXXLocalServiceUtil.addXXX(xxx);
现在我们在xxx中有增量值。我们只需要重新分配对象。