liferay 7 将模型从 MVCPorlet 插入数据库
liferay 7 insert model to database from MVCPorlet
我正在尝试使用来自服务构建器的 Util class 在 MVCPortlet 中插入一个新模型。
我有从服务生成的 EmployeeLocalServiceUtil。我能够成功地将新模型插入数据库,但我发现增量 ID 始终为 0。我看到了一些 post 介绍 EmployeeLocalServiceUtil.increment() 方法,但我发现我的生成 ServiceUtil [=29] 中不存在此方法=].
我按照一些post在service.xml的实体中添加id-type="increment",在buildService之后我发现increment()方法仍然不存在。
有什么想法吗?
EmployeePortlet.java
package com.webster.employee.portlet;
import com.webster.employee.constants.EmployeeConstant;
import com.webster.employee.constants.EmployeePortletKeys;
import com.webster.model.Employee;
import com.webster.model.ThemeBuilder;
import com.webster.service.EmployeeLocalServiceUtil;
import com.liferay.portal.kernel.json.JSONFactoryUtil;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet;
import com.liferay.portal.kernel.servlet.SessionErrors;
import com.liferay.portal.kernel.theme.PortletDisplay;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.WebKeys;
import java.io.IOException;
import java.util.List;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.Portlet;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import org.osgi.service.component.annotations.Component;
/**
* @author admin
*/
@Component(
immediate = true,
property = {
"com.liferay.portlet.display-category=category.sample",
"com.liferay.portlet.instanceable=true",
"javax.portlet.display-name=employee Portlet",
"javax.portlet.init-param.template-path=/",
"javax.portlet.init-param.view-template=/view.jsp",
"javax.portlet.name=" + EmployeePortletKeys.Employee,
"javax.portlet.resource-bundle=content.Language",
"javax.portlet.security-role-ref=power-user,user"
},
service = Portlet.class
)
public class EmployeePortlet extends MVCPortlet {
@Override
public void doView(RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {
try {
ThemeDisplay themeDisplay= (ThemeDisplay) renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
PortletDisplay portletDisplay= themeDisplay.getPortletDisplay();
String portletId= portletDisplay.getId();
Employee employee = EmployeeLocalServiceUtil.findEmployeeByPortletId(portletId);
if(employee==null){
employee = EmployeeLocalServiceUtil.createEmployee(0);
employee.setPortlet_id(portletId);
employee.setSettings("");
employee = EmployeeLocalServiceUtil.addEmployee(employee);
_log.info("DEV TEST employee is created = "+employee.getId());
}else{
_log.info("employee was exist = "+employee.getId());
}
} catch (Exception e) {
// TODO Auto-generated catch block
_log.error(e.toString());
}
super.doView(renderRequest, renderResponse);
}
private Log _log = LogFactoryUtil.getLog(EmployeePortlet.class);
}
Service.xml
<entity name="Employee" local-service="true" remote-service="false" table="employee">
<column name="id" type="int" primary="true" id-type="increment"></column>
<column name="portlet_id" type="String"></column>
<column name="settings" type="String"></column>
</entity>
您是否尝试过将 CounterLocalServiceUtil 与您的 Employee.class 一起使用?可能会解决您的问题。
不需要 .increment() 方法。我删除 increment() 并使用以下代码,
employee = EmployeeLocalServiceUtil.createEmployee(0);
并配置 id-type=increment 和 运行 构建服务。
<column name="id" type="int" primary="true" id-type="increment"></column>
我发现inserted Employee record id是每笔交易加1。
我正在尝试使用来自服务构建器的 Util class 在 MVCPortlet 中插入一个新模型。
我有从服务生成的 EmployeeLocalServiceUtil。我能够成功地将新模型插入数据库,但我发现增量 ID 始终为 0。我看到了一些 post 介绍 EmployeeLocalServiceUtil.increment() 方法,但我发现我的生成 ServiceUtil [=29] 中不存在此方法=].
我按照一些post在service.xml的实体中添加id-type="increment",在buildService之后我发现increment()方法仍然不存在。
有什么想法吗?
EmployeePortlet.java
package com.webster.employee.portlet;
import com.webster.employee.constants.EmployeeConstant;
import com.webster.employee.constants.EmployeePortletKeys;
import com.webster.model.Employee;
import com.webster.model.ThemeBuilder;
import com.webster.service.EmployeeLocalServiceUtil;
import com.liferay.portal.kernel.json.JSONFactoryUtil;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet;
import com.liferay.portal.kernel.servlet.SessionErrors;
import com.liferay.portal.kernel.theme.PortletDisplay;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.WebKeys;
import java.io.IOException;
import java.util.List;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.Portlet;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import org.osgi.service.component.annotations.Component;
/**
* @author admin
*/
@Component(
immediate = true,
property = {
"com.liferay.portlet.display-category=category.sample",
"com.liferay.portlet.instanceable=true",
"javax.portlet.display-name=employee Portlet",
"javax.portlet.init-param.template-path=/",
"javax.portlet.init-param.view-template=/view.jsp",
"javax.portlet.name=" + EmployeePortletKeys.Employee,
"javax.portlet.resource-bundle=content.Language",
"javax.portlet.security-role-ref=power-user,user"
},
service = Portlet.class
)
public class EmployeePortlet extends MVCPortlet {
@Override
public void doView(RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {
try {
ThemeDisplay themeDisplay= (ThemeDisplay) renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
PortletDisplay portletDisplay= themeDisplay.getPortletDisplay();
String portletId= portletDisplay.getId();
Employee employee = EmployeeLocalServiceUtil.findEmployeeByPortletId(portletId);
if(employee==null){
employee = EmployeeLocalServiceUtil.createEmployee(0);
employee.setPortlet_id(portletId);
employee.setSettings("");
employee = EmployeeLocalServiceUtil.addEmployee(employee);
_log.info("DEV TEST employee is created = "+employee.getId());
}else{
_log.info("employee was exist = "+employee.getId());
}
} catch (Exception e) {
// TODO Auto-generated catch block
_log.error(e.toString());
}
super.doView(renderRequest, renderResponse);
}
private Log _log = LogFactoryUtil.getLog(EmployeePortlet.class);
}
Service.xml
<entity name="Employee" local-service="true" remote-service="false" table="employee">
<column name="id" type="int" primary="true" id-type="increment"></column>
<column name="portlet_id" type="String"></column>
<column name="settings" type="String"></column>
</entity>
您是否尝试过将 CounterLocalServiceUtil 与您的 Employee.class 一起使用?可能会解决您的问题。
不需要 .increment() 方法。我删除 increment() 并使用以下代码,
employee = EmployeeLocalServiceUtil.createEmployee(0);
并配置 id-type=increment 和 运行 构建服务。
<column name="id" type="int" primary="true" id-type="increment"></column>
我发现inserted Employee record id是每笔交易加1。