Thanks Oscar I already reviewed and commented on the outcome. Best Regards.
El 13 de julio de 2016, 10:05, Óscar Bou - GOVERTIS <[email protected]> escribió: > Thanks. > > You must define JDO mappings for 1-n relationships. > > > In Regional: > > @CollectionLayout(render = RenderType.EAGERLY,paged=3) > public List<Departamento> getDepartamentos () { > return departamentos; > } > > > Should be: > > @CollectionLayout(render = RenderType.EAGERLY,paged=3) > > @Persistent(mappedBy = “regional", dependentElement = "true") > > public List<Departamento> getDepartamentos () { > return departamentos; > } > > > > > Assuming there’s a “regional” property on the “Departamento” entity. > > > In the Eclipse and IntelliJ sections you will find templates to install on > your IDE for those common relationships: > > https://isis.apache.org/guides/dg.html#_dg_ide_eclipse > > https://isis.apache.org/guides/dg.html#_dg_ide_intellij_live-templates > > > All Apache Isis templates will start with the “is” prefix. > > Those specifically about JDO, start with “isjd”. > > > When you’re creating a simple property, templates will start with “isjdp”. > > And with collections, “isjdc”. > > In your case, you need to annotate for a 1-n relationship, the Collection > side. > > So the proper template could be: > - “isjdc-1n-b-fk” named “JDO Collection (1:n bidir, implemented using a > foreign key)” > - “isjdc-1n-b-jt” named "JDO Collection (1:n bidir, implemented using a > join table)” > > > HTH, > > Oscar > > > > > > > > > > El 13 jul 2016, a las 16:48, José Alejandro Manaure Martinez < > [email protected]> escribió: > > *Ciudad.java* > package domainapp.dom.mesaAyudaPrestadores; > > > import java.util.List; > > import javax.inject.Inject; > import javax.jdo.annotations.Column; > import javax.jdo.annotations.DatastoreIdentity; > import javax.jdo.annotations.IdGeneratorStrategy; > import javax.jdo.annotations.IdentityType; > import javax.jdo.annotations.PersistenceCapable; > > import org.apache.isis.applib.annotation.Action; > import org.apache.isis.applib.annotation.Auditing; > import org.apache.isis.applib.annotation.CollectionLayout; > import org.apache.isis.applib.annotation.DomainObject; > import org.apache.isis.applib.annotation.MemberGroupLayout; > import org.apache.isis.applib.annotation.MemberOrder; > import org.apache.isis.applib.annotation.RenderType; > import org.apache.isis.applib.annotation.SemanticsOf; > import org.apache.isis.applib.services.eventbus.ActionDomainEvent; > import org.apache.isis.applib.services.repository.RepositoryService; > > import domainapp.dom.mesaAyudaPrestadores.Compania.DeleteDomainEvent; > > > // <editor-fold defaultstate="collapsed" desc=" UML Marker "> > // #[regen=yes,id=DCE.EC5D5AC6-E099-A6B8-7DBB-F44B024BCB75] > // </editor-fold> > @MemberGroupLayout( columnSpans={6,0,0,6}, left={"GENERAL"} ) > @DomainObject( auditing=Auditing.ENABLED, objectType="Ciudad" ) > @PersistenceCapable(identityType=IdentityType.DATASTORE,table="TBL_CIUDAD") > @DatastoreIdentity(strategy=IdGeneratorStrategy.IDENTITY,column="idCiudad") > public class Ciudad { > > > // <editor-fold defaultstate="collapsed" desc=" UML Marker "> > // #[regen=yes,id=DCE.B913569E-C2AF-0FF1-3177-AF92DBB927E1] > // </editor-fold> > // @Inject > private String descCiudad; > // @Inject > private String codigoLegal; > > > // <editor-fold defaultstate="collapsed" desc=" UML Marker "> > // #[regen=yes,id=DCE.D242788F-C26C-3D14-2DED-E439010AC666] > // </editor-fold> > // @Inject > private List<Sucursal> sucursales; > > // @Inject > private Departamento departamento; > > > > // <editor-fold defaultstate="collapsed" desc=" UML Marker "> > // #[regen=yes,id=DCE.5E23B2B1-F2DB-C652-CA58-D2C746738947] > // </editor-fold> > public Ciudad () { > } > > public String title() { > return descCiudad; > } > // <editor-fold defaultstate="collapsed" desc=" UML Marker "> > // > #[regen=yes,regenBody=yes,id=DCE.236F1F8A-B466-2D0E-91A8-0601283F0460] > // </editor-fold> > @Column(allowsNull="false",length=50) > @MemberOrder(name="NombreCiudad",sequence="1") > public String getDescCiudad () { > return descCiudad; > } > > // <editor-fold defaultstate="collapsed" desc=" UML Marker "> > // > #[regen=yes,regenBody=yes,id=DCE.1304E2B9-7316-78A7-4D9A-A3A597241FAA] > // </editor-fold> > public void setDescCiudad (String val) { > this.descCiudad = val; > } > > > > // <editor-fold defaultstate="collapsed" desc=" UML Marker "> > // > #[regen=yes,regenBody=yes,id=DCE.C5E932AF-283F-521A-931C-BAF12217286A] > // </editor-fold> > @CollectionLayout(render = RenderType.EAGERLY,paged=3) > public List<Sucursal> getSucursales () { > return sucursales; > } > > // <editor-fold defaultstate="collapsed" desc=" UML Marker "> > // > #[regen=yes,regenBody=yes,id=DCE.5F6CEB5A-A5D8-0748-860A-F5199F8D0CF3] > // </editor-fold> > public void setSucursales (List<Sucursal> val) { > this.sucursales = val; > } > > @CollectionLayout(render = RenderType.EAGERLY,paged=3) > public Departamento getDepartamento() { > return departamento; > } > > public void setDepartamento(Departamento departamento) { > this.departamento = departamento; > } > @Column(allowsNull="false") > @MemberOrder(name="CodigoLegalCiudad",sequence="2") > public String getCodigoLegal() { > return codigoLegal; > } > > public void setCodigoLegal(String codigoLegal) { > this.codigoLegal = codigoLegal; > } > > public static class DeleteDomainEvent extends ActionDomainEvent<Ciudad> > {} > @Action( > domainEvent = DeleteDomainEvent.class, > semantics = SemanticsOf.NON_IDEMPOTENT_ARE_YOU_SURE > ) > public void borrarCiudad() { > repositoryService.remove(this); > } > @javax.inject.Inject > RepositoryService repositoryService; > } > > > > ******************************************************************************************* > > *CiudadRepo.java* > package domainapp.dom.mesaAyudaPrestadores; > > import java.util.List; > > import javax.inject.Inject; > > import org.apache.isis.applib.DomainObjectContainer; > import org.apache.isis.applib.annotation.Action; > import org.apache.isis.applib.annotation.ActionLayout; > import org.apache.isis.applib.annotation.BookmarkPolicy; > import org.apache.isis.applib.annotation.DomainService; > import org.apache.isis.applib.annotation.DomainServiceLayout; > import org.apache.isis.applib.annotation.DomainServiceLayout.MenuBar; > import org.apache.isis.applib.services.repository.RepositoryService; > import org.apache.isis.applib.util.ObjectContracts; > > import org.apache.isis.applib.annotation.MemberOrder; > import org.apache.isis.applib.annotation.NatureOfService; > import org.apache.isis.applib.annotation.ParameterLayout; > import org.apache.isis.applib.annotation.SemanticsOf; > > @DomainService(nature=NatureOfService.VIEW_MENU_ONLY, > repositoryFor=CiudadRepo.class) > > @DomainServiceLayout(menuBar=MenuBar.PRIMARY,menuOrder="30",named="Parametrización") > public class CiudadRepo { > @Inject > private DomainObjectContainer container; > @Inject > private DepartamentoRepo DeptoRep; > @MemberOrder(sequence="30.3") > @Action(semantics = SemanticsOf.SAFE) > @ActionLayout(bookmarking = BookmarkPolicy.AS_ROOT) > public List<Ciudad> listarCiudades() { > return repositoryService.allInstances(Ciudad.class); > } > public Ciudad CrearCiudad( > final @ParameterLayout(named="NombreCiudad") String descCiudad, > final @ParameterLayout(named="CodigoLegalCiudad") String codigoLegalCiudad, > final @ParameterLayout(named="Departamento") Departamento depto){ > > Ciudad ciu = container.newTransientInstance(Ciudad.class); > ciu.setDescCiudad(descCiudad); > ciu.setCodigoLegal(codigoLegalCiudad); > ciu.setDepartamento(depto); > container.persist( ciu ); > return ciu; > } > public List<Departamento> choices2CrearCiudad(){ > return DeptoRep.listarDepartamentos(); > } > @javax.inject.Inject > RepositoryService repositoryService; > > } > > > ***************************************************************************************************************** > Regional.java > package domainapp.dom.mesaAyudaPrestadores; > > > import java.util.List; > > import javax.jdo.annotations.Column; > import javax.jdo.annotations.DatastoreIdentity; > import javax.jdo.annotations.IdGeneratorStrategy; > import javax.jdo.annotations.IdentityType; > import javax.jdo.annotations.PersistenceCapable; > > import org.apache.isis.applib.annotation.Action; > import org.apache.isis.applib.annotation.Auditing; > import org.apache.isis.applib.annotation.DomainObject; > import org.apache.isis.applib.annotation.DomainObjectLayout; > import org.apache.isis.applib.annotation.MemberGroupLayout; > import org.apache.isis.applib.annotation.MemberOrder; > import org.apache.isis.applib.annotation.Nature; > > import org.apache.isis.applib.annotation.CollectionLayout; > import org.apache.isis.applib.annotation.RenderType; > import org.apache.isis.applib.annotation.SemanticsOf; > import org.apache.isis.applib.services.eventbus.ActionDomainEvent; > import org.apache.isis.applib.services.repository.RepositoryService; > > import domainapp.dom.mesaAyudaPrestadores.Compania.DeleteDomainEvent; > > import javax.inject.Inject; > > // <editor-fold defaultstate="collapsed" desc=" UML Marker "> > // #[regen=yes,id=DCE.52354FC3-B6D7-4F76-B582-16DA9C3AACCE] > // </editor-fold> > @MemberGroupLayout( columnSpans={6,0,0,6}, left={"GENERAL"} ) > @DomainObject( auditing=Auditing.ENABLED, objectType="Regional" ) > > @PersistenceCapable(identityType=IdentityType.DATASTORE,table="TBL_REGIONAL") > > @DatastoreIdentity(strategy=IdGeneratorStrategy.IDENTITY,column="idRegional") > public class Regional { > > //@Inject > private Departamento departamento; > //@Inject > private DepartamentoRepo deptoRep; > // <editor-fold defaultstate="collapsed" desc=" UML Marker "> > // #[regen=yes,id=DCE.FCF04A4C-92D1-3041-75E2-E9C9E28ADF2B] > // </editor-fold> > private String descRegional; > > // <editor-fold defaultstate="collapsed" desc=" UML Marker "> > // #[regen=yes,id=DCE.151ACBA2-F999-E997-353C-72CF8366B553] > // </editor-fold> > @Inject > private List<Departamento> departamentos; > > > > // <editor-fold defaultstate="collapsed" desc=" UML Marker "> > // #[regen=yes,id=DCE.43B02CC0-C04D-1891-32C3-837AC4D5D887] > // </editor-fold> > public Regional () { > } > > > > public String title() { > return descRegional; > } > > // <editor-fold defaultstate="collapsed" desc=" UML Marker "> > // > #[regen=yes,regenBody=yes,id=DCE.9E28EE52-7F8D-DDD5-CB2F-52129E9B8E6C] > // </editor-fold> > @CollectionLayout(render = RenderType.EAGERLY,paged=3) > public List<Departamento> getDepartamentos () { > return departamentos; > } > > // <editor-fold defaultstate="collapsed" desc=" UML Marker "> > // > #[regen=yes,regenBody=yes,id=DCE.EC578B88-88BB-E59A-7A5E-F0BA857EEF27] > // </editor-fold> > public void setDepartamentos (List<Departamento> val) { > this.departamentos = val; > } > > // <editor-fold defaultstate="collapsed" desc=" UML Marker "> > // > #[regen=yes,regenBody=yes,id=DCE.D4878FF2-8F3B-B88B-5117-F0668EFB6A36] > // </editor-fold> > @Column(allowsNull="false", length=120) > @MemberOrder(name="NombreRegional",sequence="1") > public String getDescRegional () { > return descRegional; > } > > // <editor-fold defaultstate="collapsed" desc=" UML Marker "> > // > #[regen=yes,regenBody=yes,id=DCE.CACCC27F-51B0-84B1-3F01-015920EDCA60] > // </editor-fold> > public void setDescRegional (String val) { > this.descRegional = val; > } > > public static class DeleteDomainEvent extends > ActionDomainEvent<Regional> {} > @Action( > domainEvent = DeleteDomainEvent.class, > semantics = SemanticsOf.NON_IDEMPOTENT_ARE_YOU_SURE > ) > public void borrarRegional() { > repositoryService.remove(this); > } > @javax.inject.Inject > RepositoryService repositoryService; > > > } > > > > ********************************************************************************************** > RegionalRepo.java > package domainapp.dom.mesaAyudaPrestadores; > > import java.util.List; > > import javax.inject.Inject; > > import org.apache.isis.applib.DomainObjectContainer; > import org.apache.isis.applib.annotation.Action; > import org.apache.isis.applib.annotation.ActionLayout; > import org.apache.isis.applib.annotation.BookmarkPolicy; > import org.apache.isis.applib.annotation.DomainService; > import org.apache.isis.applib.annotation.DomainServiceLayout; > import org.apache.isis.applib.annotation.DomainServiceLayout.MenuBar; > import org.apache.isis.applib.services.repository.RepositoryService; > import org.apache.isis.applib.util.ObjectContracts; > > import org.apache.isis.applib.annotation.MemberOrder; > import org.apache.isis.applib.annotation.NatureOfService; > import org.apache.isis.applib.annotation.ParameterLayout; > import org.apache.isis.applib.annotation.SemanticsOf; > > @DomainService(nature=NatureOfService.VIEW_MENU_ONLY, > repositoryFor=CompaniaRepo.class) > > @DomainServiceLayout(menuBar=MenuBar.PRIMARY,menuOrder="10",named="Parametrización") > public class RegionalRepo { > > @Inject > private DomainObjectContainer container; > @MemberOrder(sequence="10.3") > @Action(semantics = SemanticsOf.SAFE) > @ActionLayout(bookmarking = BookmarkPolicy.AS_ROOT) > public List<Regional> ListarRegionales() { > return repositoryService.allInstances(Regional.class); > } > public Regional CrearRegional( > final @ParameterLayout(named="NombreRegional") String descRegional){ > Regional reg = container.newTransientInstance(Regional.class); > reg.setDescRegional(descRegional); > container.persist( reg ); > return reg; > } > @javax.inject.Inject > RepositoryService repositoryService; > } > > El 13 de julio de 2016, 9:39, Óscar Bou - GOVERTIS <[email protected]> > escribió: > >> Hola, Jose Alejandro. >> >> Seems screenshots are allowed, but attachments removed. >> >> Can you copy-n-paste Java code for relevant classes? >> >> >> El 13 jul 2016, a las 16:37, José Alejandro Manaure Martinez < >> [email protected]> escribió: >> >> Hi Oscar >> Attached class code. >> >> >> El 13 de julio de 2016, 9:32, Óscar Bou - GOVERTIS <[email protected]> >> escribió: >> >>> Hi Jose Alejandro. >>> >>> Only the screenshot visible, at least for me. >>> >>> Please, can you send the code for relevant properties and collections in >>> all classes ? >>> >>> Cheers, >>> >>> Oscar >>> >>> >>> El 13 jul 2016, a las 16:27, José Alejandro Manaure Martinez < >>> [email protected]> escribió: >>> >>> Hi Dan >>> >>> I have a relationship between classes where one or more cities belong to >>> a department, and one or more departments belong to a regional. For Example >>> in US: Albany, Bronx and Brome are counties that belong to State of New >>> York, and State of New York belong to Mid-Atlantic (Region). When these >>> relationships are created in Apache Isis, Framework respects relations >>> children to parents, however, when I want to show the children of a parent >>> the child list remains empty. >>> >>> >>> Attached declared classes and capture of application to illustrate the >>> question >>> >>> >>> <image.png> >>> -- >>> [image: Logo] >>> >>> José Alejandro Manaure >>> *Project Manager* >>> Tel: (57) 1 703 17 77 >>> Cel: (57) 312 5476188 >>> E-mail: [email protected] >>> Calle 93 # 19b - 66 Ofc 202 >>> Bogotá D.C., Colombia >>> www.ticxar.com >>> [image: facebook] >>> <https://www.facebook.com/pages/Ticxar/446503822192581> [image: twitter] >>> <http://twitter.com/ticxar> [image: linkedIn] >>> <https://www.linkedin.com/company/ticxar> >>> >>> >>> <govertis1.png> >>> >>> Óscar Bou Bou >>> Socio - IT & GRC Management Services Director >>> m: +34 620 267 520 >>> s: <http://www.govertis.com/>www.govertis.com e: [email protected] >>> >>> LinkedIn: https://www.linkedin.com/in/oscarbou >>> Twitter: @oscarbou <https://twitter.com/oscarbou> >>> >>> >>> >>> Este mensaje y los ficheros anexos son confidenciales. Los mismos >>> contienen información reservada que no puede ser difundida. Si usted ha >>> recibido este correo por error, tenga la amabilidad de eliminarlo de su >>> sistema y avisar al remitente mediante reenvío a su dirección electrónica; >>> no deberá copiar el mensaje ni divulgar su contenido a ninguna persona. >>> >>> Su dirección de correo electrónico junto a sus datos personales constan >>> en un fichero titularidad de GOVERTIS ADVISORY SERVICES, S.L. cuya >>> finalidad es la de mantener el contacto con Ud. Si quiere saber de qué >>> información disponemos de Ud., modificarla, y en su caso, cancelarla, puede >>> hacerlo enviando un escrito al efecto, acompañado de una fotocopia de su >>> D.N.I. a la siguiente dirección: GOVERTIS ADVISORY SERVICES, S.L. Avda >>> Cortes Valencianas, 58 – 8º - 6ª. 46015 - Valencia, y Paseo de la >>> Castellana, 153, 28045 - MADRID. Asimismo, es su responsabilidad comprobar >>> que este mensaje o sus archivos adjuntos no contengan virus informáticos, y >>> en caso que los tuvieran eliminarlos. >>> >>> >> >> >> -- >> [image: Logo] >> >> José Alejandro Manaure >> *Project Manager* >> Tel: (57) 1 703 17 77 >> Cel: (57) 312 5476188 >> E-mail: [email protected] >> Calle 93 # 19b - 66 Ofc 202 >> Bogotá D.C., Colombia >> www.ticxar.com >> [image: facebook] >> <https://www.facebook.com/pages/Ticxar/446503822192581> [image: twitter] >> <http://twitter.com/ticxar> [image: linkedIn] >> <https://www.linkedin.com/company/ticxar> >> >> >> >> Óscar Bou Bou >> Socio - IT & GRC Management Services Director >> m: +34 620 267 520 >> s: <http://www.govertis.com/>www.govertis.com e: [email protected] >> >> LinkedIn: https://www.linkedin.com/in/oscarbou >> Twitter: @oscarbou <https://twitter.com/oscarbou> >> >> >> >> Este mensaje y los ficheros anexos son confidenciales. Los mismos >> contienen información reservada que no puede ser difundida. Si usted ha >> recibido este correo por error, tenga la amabilidad de eliminarlo de su >> sistema y avisar al remitente mediante reenvío a su dirección electrónica; >> no deberá copiar el mensaje ni divulgar su contenido a ninguna persona. >> >> Su dirección de correo electrónico junto a sus datos personales constan >> en un fichero titularidad de GOVERTIS ADVISORY SERVICES, S.L. cuya >> finalidad es la de mantener el contacto con Ud. Si quiere saber de qué >> información disponemos de Ud., modificarla, y en su caso, cancelarla, puede >> hacerlo enviando un escrito al efecto, acompañado de una fotocopia de su >> D.N.I. a la siguiente dirección: GOVERTIS ADVISORY SERVICES, S.L. Avda >> Cortes Valencianas, 58 – 8º - 6ª. 46015 - Valencia, y Paseo de la >> Castellana, 153, 28045 - MADRID. Asimismo, es su responsabilidad comprobar >> que este mensaje o sus archivos adjuntos no contengan virus informáticos, y >> en caso que los tuvieran eliminarlos. >> >> > > > -- > [image: Logo] > > José Alejandro Manaure > *Project Manager* > Tel: (57) 1 703 17 77 > Cel: (57) 312 5476188 > E-mail: [email protected] > Calle 93 # 19b - 66 Ofc 202 > Bogotá D.C., Colombia > www.ticxar.com > [image: facebook] > <https://www.facebook.com/pages/Ticxar/446503822192581> [image: twitter] > <http://twitter.com/ticxar> [image: linkedIn] > <https://www.linkedin.com/company/ticxar> > > > > Óscar Bou Bou > Socio - IT & GRC Management Services Director > m: +34 620 267 520 > s: <http://www.govertis.com>www.govertis.com e: [email protected] > > LinkedIn: https://www.linkedin.com/in/oscarbou > Twitter: @oscarbou <https://twitter.com/oscarbou> > > > > Este mensaje y los ficheros anexos son confidenciales. Los mismos > contienen información reservada que no puede ser difundida. Si usted ha > recibido este correo por error, tenga la amabilidad de eliminarlo de su > sistema y avisar al remitente mediante reenvío a su dirección electrónica; > no deberá copiar el mensaje ni divulgar su contenido a ninguna persona. > > Su dirección de correo electrónico junto a sus datos personales constan en > un fichero titularidad de GOVERTIS ADVISORY SERVICES, S.L. cuya finalidad > es la de mantener el contacto con Ud. Si quiere saber de qué información > disponemos de Ud., modificarla, y en su caso, cancelarla, puede hacerlo > enviando un escrito al efecto, acompañado de una fotocopia de su D.N.I. a > la siguiente dirección: GOVERTIS ADVISORY SERVICES, S.L. Avda Cortes > Valencianas, 58 – 8º - 6ª. 46015 - Valencia, y Paseo de la Castellana, > 153, 28045 - MADRID. Asimismo, es su responsabilidad comprobar que este > mensaje o sus archivos adjuntos no contengan virus informáticos, y en caso > que los tuvieran eliminarlos. > > -- [image: Logo] José Alejandro Manaure *Project Manager* Tel: (57) 1 703 17 77 Cel: (57) 312 5476188 E-mail: [email protected] Calle 93 # 19b - 66 Ofc 202 Bogotá D.C., Colombia www.ticxar.com [image: facebook] <https://www.facebook.com/pages/Ticxar/446503822192581> [image: twitter] <http://twitter.com/ticxar> [image: linkedIn] <https://www.linkedin.com/company/ticxar>
