Primefaces rowKey LazyDataModel

Use LazyDataModel width RowKey:

XHTML:
<p:dataTable id=“gridNotas” var=“nota” value="#{gerenciaNotasBean.model}" selection="#{gerenciaNotaBean.notaSelecionada}“
rowKey=”#{nota.id}"
widgetVar=“dtgernota” style=“margin-top: 10px;” lazy="true"
emptyMessage=“Nenhuma nota encontrada.” rows=“10"
paginator=“true” paginatorAlwaysVisible=“false” paginatorPosition=“bottom” reflow=“true"
scrollable=“false”>
<p:ajax event=“rowSelectRadio” update=”:panelBotoes”/>
<p:column selectionMode=“single” style=“width:16px;text-align:center”/>

Erro:
getRowKey(T object) must be implemented when basic rowKey algorithm is not used.

java.lang.UnsupportedOperationException: getRowData(String rowKey) must be implemented when basic rowKey algorithm is not used.
	at org.primefaces.model.LazyDataModel.getRowData(LazyDataModel.java:116)
	at org.primefaces.component.datatable.DataTable.getRowData(DataTable.java:1241)
	at org.primefaces.component.datatable.feature.SelectionFeature.decodeSingleSelection(SelectionFeature.java:59)
	at org.primefaces.component.datatable.feature.SelectionFeature.decode(SelectionFeature.java:46)
	at org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:62)
	at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:832)
	at org.primefaces.component.api.UIData.processDecodes(UIData.java:282)
	at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:573)
	at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
	at org.primefaces.component.api.UIData.visitTree(UIData.java:822)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
	at javax.faces.component.UIForm.visitTree(UIForm.java:362)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
	at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:403)
	at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:266)
	at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219)
	at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:60)
	at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:927)
	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at br.com.openfiscal.filter.EmitenteFilter.doFilter(EmitenteFilter.java:56)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:96)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)

02-Dec-2017 21:26:08.709 WARNING [http-nio-8080-exec-6] com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute java.lang.UnsupportedOperationException: getRowData(String rowKey) must be implemented when basic rowKey algorithm is not used.
 javax.faces.FacesException: java.lang.UnsupportedOperationException: getRowData(String rowKey) must be implemented when basic rowKey algorithm is not used.
	at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:273)
	at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219)
	at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:60)
	at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:927)
	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at br.com.openfiscal.filter.EmitenteFilter.doFilter(EmitenteFilter.java:56)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:96)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.UnsupportedOperationException: getRowData(String rowKey) must be implemented when basic rowKey algorithm is not used.
	at org.primefaces.model.LazyDataModel.getRowData(LazyDataModel.java:116)
	at org.primefaces.component.datatable.DataTable.getRowData(DataTable.java:1241)
	at org.primefaces.component.datatable.feature.SelectionFeature.decodeSingleSelection(SelectionFeature.java:59)
	at org.primefaces.component.datatable.feature.SelectionFeature.decode(SelectionFeature.java:46)
	at org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:62)
	at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:832)
	at org.primefaces.component.api.UIData.processDecodes(UIData.java:282)
	at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:573)
	at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
	at org.primefaces.component.api.UIData.visitTree(UIData.java:822)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
	at javax.faces.component.UIForm.visitTree(UIForm.java:362)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
	at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:403)
	at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:266)