Como acessar lazy child no gsp com multi-tenant?
22/12/2020 11:29
0
Estou fazendo atualização de um projeto enorme para utilizar a arquitetura multi-tenant, mas me deparei com um problema, quase todos os gsp tem um entidade com lazy child e é requisitado um valor desse filho. Com o dataSource padrão funcionava 100%, porém com a atualização de multi-tenant, esse dataSource padrão foi removido e foi inserido outros bancos em dataSources e toda vez que é requisitado um lazy child esta estourando a exceção "
org.hibernate.LazyInitializationException: could not initialize proxy - no Sessio
". Alguém sabe como acessar um um filho lazy dentro do gsp utilizando multi-tenant?
Grails 3.3.11
Gorm 6.1.12

??import grails.gorm.MultiTenant;

class Pessoa implements MultiTenant{
 String nome
 Endereco endereco

 static constraints = {
  nome(nullable:false);
  endereco(nullable:true);
 }

 static mapping = {
  enderecos cascade:"all-delete-orphan"
 }
}

import grails.gorm.MultiTenant;

class Endereco implements MultiTenant<Endereco> {
 String rua;
 Integer numero;

 static constraints = {
  rua(nullable:false);
  numero(nullable:false);
 }
}

import grails.validation.ValidationException
import static org.springframework.http.HttpStatus.*
import grails.gorm.multitenancy.*

@CurrentTenant
class PessoaController {

    static allowedMethods = [save: "POST", update: "PUT", delete: "DELETE"]

    def show(Long id) {
        [pessoa: Pessoa.get(id)]
    }
}

<!DOCTYPE html>
<html>
    <head>
        <meta name="layout" content="main" />
        <g:set var="entityName" value="${message(code: 'pessoa.label', default: 'Pessoa')}" />
        <title><g:message code="default.show.label" args="[entityName]" /></title>
    </head>
    <body>
        <a href="#show-pessoa" class="skip" tabindex="-1"><g:message code="default.link.skip.label" default="Skip to content…"/></a>
        <div class="nav" role="navigation">
            <ul>
                <li><a class="home" href="${createLink(uri: '/')}"><g:message code="default.home.label"/></a></li>
                <li><g:link class="list" action="index"><g:message code="default.list.label" args="[entityName]" /></g:link></li>
                <li><g:link class="create" action="create"><g:message code="default.new.label" args="[entityName]" /></g:link></li>
            </ul>
        </div>
        <div id="show-pessoa" class="content scaffold-show" role="main">
            <h1><g:message code="default.show.label" args="[entityName]" /></h1>
            <g:if test="${flash.message}">
            <div class="message" role="status">${flash.message}</div>
            </g:if>
            <fieldset class="form">
                <div class="fieldcontain">
                    <label for="nome">Nome
                    </label>
                    ${this.pessoa.nome}
                </div>

                <div class="fieldcontain">
                    <label for="nome">Endereco
                    </label>
                    ${this.pessoa.endereco}
                </div>
            </fieldset>
            <g:form resource="${this.pessoa}" method="DELETE">
                <fieldset class="buttons">
                    <g:link class="edit" action="edit" resource="${this.pessoa}"><g:message code="default.button.edit.label" default="Edit" /></g:link>
                    <input class="delete" type="submit" value="${message(code: 'default.button.delete.label', default: 'Delete')}" onclick="return confirm('${message(code: 'default.button.delete.confirm.message', default: 'Are you sure?')}');" />
                </fieldset>
            </g:form>
        </div>
    </body>
</html>?
Tags: Grails, Groovy, gsp, hibernate, GORM


0
Olha só se é lazy não carrega certo? se você tenta acessar depois então faz sentido, seria melhor vc paginar ou tornar eager veja se faz sentido ser mesmo lazy já que vc precisa acessar na mesma request.
02/05/2021 13:18



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.12.1
itexto