LazyDaModel com DataTable do PrimeFaces

Pessoal tenho uma aplicação desenvolvida em Java com primeFaces, Hibernate e banco de dados MySql. Desenvolvi um método para atualizar meu dataTable pagina a pagina (Lazy loading). É uma pagina de Notas Fiscais que carrega no rowExpendive os itens da Nota. O problema é quando tento clicar em uma nota para edita-la. esta apresentando o erro. Caused by: java.lang.UnsupportedOperationException: getRowData(String rowKey) must be implemented when basic rowKey algorithm is not used.

Eu não sei com nem onde implementar este método. Alguém poderia me ajudar.:
Segue abaixo o dataTabela e o método que carrega os dados da nota.
<p:dataTable paginator=“true” rows=“08” draggableColumns=“true"
value=”#{notaFiscalBean.notas}" var=“nota"
selectionMode=“single” selection=”#{notaFiscalBean.notaFiscal}“
reflow=“true” scrollable=“true” lazy=“true"
emptyMessage=“Nenhum Registro Encontrado.“
widgetVar=“listNotaFiscal” rowKey=”#{nota.codigo}“
paginatorPosition=“bottom”>
<p:ajax event=“rowSelect” listener=”#{notaFiscalBean.editar}” update=”:formCadastro:painel :mensagem” onclick=“PF(‘entradaDeNotaFiscal’).show();” />

                        <f:facet name="header">
                            <p:commandButton title="Novo" icon="fa fa-plus"
                                onclick="PF('entradaDeNotaFiscal').show()"
                                actionListener="#{notaFiscalBean.novo}"
                                update=":formCadastro:painel :mensagem" />

                            <p:commandButton title="Editar" icon="fa fa-fw fa-edit"
                                actionListener="#{notaFiscalBean.editar}"
                                onclick="PF('entradaDeNotaFiscal').show();"
                                update=":formCadastro:painel :mensagem" />

                            <p:commandButton title="Voltar" icon="fa fa-mail-reply" />
                        </f:facet>

                        <p:column style="width: 15px">
                            <p:rowToggler/>
                        </p:column>

                    <p:rowExpansion>
                            <p:dataTable reflow="true" rows="10" draggableColumns="true"
                                value="#{nota.itensDaNotaFiscal}" var="itemDaNota" 
                                style="width: 98%" emptyMessage="Nenhum Registro Encontrado."
                                paginator="true" paginatorPosition="bottom">

                                <p:column headerText="Cod." style="width: 40px">
                                    <h:outputText value="#{itemDaNota.produto.codigo}" />
                                </p:column>

                                <p:column headerText="Descr. Produto" style="width: 400px">
                                    <h:outputText value="#{itemDaNota.produto.descricao}" />
                                </p:column>

                                <p:column headerText="Quant."
                                    style="width: 100px; text-align: center">
                                    <h:outputText value="#{itemDaNota.quantidade}">
                                        <f:convertNumber minFractionDigits="3" locale="pt_BR" />
                                    </h:outputText>
                                </p:column>

                                <p:column headerText="Vlr. Unit."
                                    style="width: 100px; text-align: right">
                                    <h:outputText value="#{itemDaNota.valorUnitario}">
                                        <f:convertNumber locale="pt_BR" minFractionDigits="3" />
                                    </h:outputText>
                                </p:column>

                                <p:column headerText="Vlr. Total"
                                    style="width: 110px; text-align: right">
                                    <h:outputText value="#{itemDaNota.totalDoItem}">
                                        <f:convertNumber locale="pt_BR" minFractionDigits="2" />
                                    </h:outputText>
                                </p:column>
                            </p:dataTable>
                        </p:rowExpansion> -->

                        <p:column headerText="Tipo" width="30"
                            style="text-align: center">
                            <h:outputText value="#{nota.tipoDeOperacao}" />
                        </p:column>

                        <p:column headerText="NF" width="110"
                            filterBy="#{nota.notaFiscal}" sortBy="#{nota.notaFiscal}">
                            <h:outputText value="#{nota.notaFiscal}" />
                        </p:column>

                        <p:column headerText="Emitente" width="400"
                            filterBy="#{nota.pessoa.nome}" filterMatchMode="contains"
                            sortBy="#{nota.pessoa.nome}">
                            <h:outputText value="#{fn:substring(nota.pessoa.nome,0,35)}" />
                        </p:column>

                        <p:column headerText="Data Emissão" width="110" filterBy="true" 
                            style="text-align: center">
                            <h:outputText value="#{nota.dataDeEmissao}">
                                <f:convertDateTime pattern="dd/MM/yyyy" />
                            </h:outputText>
                        </p:column>

                        <p:column headerText="Valor" width="130"
                            style="text-align: right">
                            <h:outputText value="#{nota.valorTotal}">
                                <f:convertNumber locale="pt_BR" minFractionDigits="2" />
                            </h:outputText>
                        </p:column>

                        <p:column headerText="Status" filterBy="#{nota.status}"
                            width="120" filterMatchMode="equals" style="text-align: center">
                            <f:facet name="filter">
                                <p:selectOneButton onchange="PF('listNotaFiscal').filter()">
                                    <f:converter converterId="javax.faces.Character" />
                                    <f:selectItem itemValue="" itemLabel="T." />
                                    <f:selectItem itemValue="A" itemLabel="A." />
                                    <f:selectItem itemValue="C" itemLabel="C." />
                                </p:selectOneButton>
                            </f:facet>
                            <h:outputText value="#{nota.status}" />
                        </p:column>
                    </p:dataTable>

                    <p:confirmDialog global="true" showEffect="fade"
                        hideEffect="fade" width="300">
                        <p:commandButton value="Sim" type="button"
                            styleClass="ui-confirmdialog-yes GreenButton"
                            icon="ui-icon-check" />
                        <p:commandButton value="Não" type="button"
                            styleClass="ui-confirmdialog-no RedButton" icon="ui-icon-close" />
                    </p:confirmDialog>
                </p:panel>

Pessoal tenho uma aplicação desenvolvida em Java com primeFaces, Hibernate e banco de dados MySql. Desenvolvi um método para atualizar meu dataTable pagina a pagina (Lazy loading). É uma pagina de Notas Fiscais que carrega no rowExpendive os itens da Nota. O problema é quando tento clicar em uma nota para edita-la. esta apresentando o erro. Caused by: java.lang.UnsupportedOperationException: getRowData(String rowKey) must be implemented when basic rowKey algorithm is not used.

Eu não sei com nem onde implementar este metodo. Alguem poderia me ajudar.: Segue abaixo o dataTabela e o método que carrega os dados da nota.

                        <p:dataTable paginator="true" rows="08" draggableColumns="true"
                        value="#{notaFiscalBean.notas}" var="nota"
                        selectionMode="single" selection="#{notaFiscalBean.notaFiscal}"
                        reflow="true" scrollable="true" lazy="true"
                        emptyMessage="Nenhum Registro Encontrado."
                        widgetVar="listNotaFiscal" rowKey="#{nota.codigo}"
                        paginatorPosition="bottom">
                        <p:ajax event="rowSelect" listener="#{notaFiscalBean.editar}" update=":formCadastro:painel :mensagem" onclick="PF('entradaDeNotaFiscal').show();" />

                        <f:facet name="header">
                            <p:commandButton title="Novo" icon="fa fa-plus"
                                onclick="PF('entradaDeNotaFiscal').show()"
                                actionListener="#{notaFiscalBean.novo}"
                                update=":formCadastro:painel :mensagem" />

                            <p:commandButton title="Editar" icon="fa fa-fw fa-edit"
                                actionListener="#{notaFiscalBean.editar}"
                                onclick="PF('entradaDeNotaFiscal').show();"
                                update=":formCadastro:painel :mensagem" />

                            <p:commandButton title="Voltar" icon="fa fa-mail-reply" />
                        </f:facet>

                        <p:column style="width: 15px">
                            <p:rowToggler/>
                        </p:column>

                    <p:rowExpansion>
                            <p:dataTable reflow="true" rows="10" draggableColumns="true"
                                value="#{nota.itensDaNotaFiscal}" var="itemDaNota" 
                                style="width: 98%" emptyMessage="Nenhum Registro Encontrado."
                                paginator="true" paginatorPosition="bottom">

                                <p:column headerText="Cod." style="width: 40px">
                                    <h:outputText value="#{itemDaNota.produto.codigo}" />
                                </p:column>

                                <p:column headerText="Descr. Produto" style="width: 400px">
                                    <h:outputText value="#{itemDaNota.produto.descricao}" />
                                </p:column>

                                <p:column headerText="Quant."
                                    style="width: 100px; text-align: center">
                                    <h:outputText value="#{itemDaNota.quantidade}">
                                        <f:convertNumber minFractionDigits="3" locale="pt_BR" />
                                    </h:outputText>
                                </p:column>

                                <p:column headerText="Vlr. Unit."
                                    style="width: 100px; text-align: right">
                                    <h:outputText value="#{itemDaNota.valorUnitario}">
                                        <f:convertNumber locale="pt_BR" minFractionDigits="3" />
                                    </h:outputText>
                                </p:column>

                                <p:column headerText="Vlr. Total"
                                    style="width: 110px; text-align: right">
                                    <h:outputText value="#{itemDaNota.totalDoItem}">
                                        <f:convertNumber locale="pt_BR" minFractionDigits="2" />
                                    </h:outputText>
                                </p:column>
                            </p:dataTable>
                        </p:rowExpansion> -->

                        <p:column headerText="Tipo" width="30"
                            style="text-align: center">
                            <h:outputText value="#{nota.tipoDeOperacao}" />
                        </p:column>

                        <p:column headerText="NF" width="110"
                            filterBy="#{nota.notaFiscal}" sortBy="#{nota.notaFiscal}">
                            <h:outputText value="#{nota.notaFiscal}" />
                        </p:column>

                        <p:column headerText="Emitente" width="400"
                            filterBy="#{nota.pessoa.nome}" filterMatchMode="contains"
                            sortBy="#{nota.pessoa.nome}">
                            <h:outputText value="#{fn:substring(nota.pessoa.nome,0,35)}" />
                        </p:column>

                        <p:column headerText="Data Emissão" width="110" filterBy="true" 
                            style="text-align: center">
                            <h:outputText value="#{nota.dataDeEmissao}">
                                <f:convertDateTime pattern="dd/MM/yyyy" />
                            </h:outputText>
                        </p:column>

                        <p:column headerText="Valor" width="130"
                            style="text-align: right">
                            <h:outputText value="#{nota.valorTotal}">
                                <f:convertNumber locale="pt_BR" minFractionDigits="2" />
                            </h:outputText>
                        </p:column>

                        <p:column headerText="Status" filterBy="#{nota.status}"
                            width="120" filterMatchMode="equals" style="text-align: center">
                            <f:facet name="filter">
                                <p:selectOneButton onchange="PF('listNotaFiscal').filter()">
                                    <f:converter converterId="javax.faces.Character" />
                                    <f:selectItem itemValue="" itemLabel="T." />
                                    <f:selectItem itemValue="A" itemLabel="A." />
                                    <f:selectItem itemValue="C" itemLabel="C." />
                                </p:selectOneButton>
                            </f:facet>
                            <h:outputText value="#{nota.status}" />
                        </p:column>
                    </p:dataTable>

                    <p:confirmDialog global="true" showEffect="fade"
                        hideEffect="fade" width="300">
                        <p:commandButton value="Sim" type="button"
                            styleClass="ui-confirmdialog-yes GreenButton"
                            icon="ui-icon-check" />
                        <p:commandButton value="Não" type="button"
                            styleClass="ui-confirmdialog-no RedButton" icon="ui-icon-close" />
                    </p:confirmDialog>
                </p:panel>

Abaixo a variabel nota, que carrega o DataTable.
public NotaFiscalBean() {
notas = new LazyDataModel() {

    private static final long serialVersionUID = 1L;

    @Override
    public NotaFiscal getRowData() {
        return super.getRowData();
    }

    @Override
    public List<NotaFiscal> load(int first, int pageSize, String sortField, SortOrder sortOrder,
            Map<String, Object> filters) {

        filtros.setPrimeiroRegistro(first);
        filtros.setQuantidadeRegistros(pageSize);
        filtros.setAscendente(SortOrder.ASCENDING.equals(sortOrder));
        filtros.setOrdenacao(sortField);

        if (filters.containsKey("pessoa.nome"))
            filtros.setFornecedor((String) filters.get("pessoa.nome"));
        else
            filtros.setFornecedor(null);

        if (filters.containsKey("notaFiscal")) {
            String temp = (String) filters.get("notaFiscal");
            filtros.setNotaFiscal(Integer.parseInt(temp));
        } else {
            filtros.setNotaFiscal(null);
        }

        setRowCount(notaFiscalDAO.quantidadeFiltrada(filtros));

        return notaFiscalDAO.listar(filtros);
    }
};

}