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
<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]
> <mailto:[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] <mailto:[email protected]>> escribió:
>>
>> Hi Oscar
>> Attached class code.
>>
>>
>> El 13 de julio de 2016, 9:32, Óscar Bou - GOVERTIS <[email protected]
>> <mailto:[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] <mailto:[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>
>>>
>>> --
>>>
>>> José Alejandro Manaure
>>> Project Manager
>>> Tel: (57) 1 703 17 77
>>> Cel: (57) 312 5476188
>>> E-mail: [email protected] <mailto:[email protected]>
>>> Calle 93 # 19b - 66 Ofc 202
>>> Bogotá D.C., Colombia
>>> www.ticxar.com <http://www.ticxar.com/>
>>> <https://www.facebook.com/pages/Ticxar/446503822192581>
>>> <http://twitter.com/ticxar> <https://www.linkedin.com/company/ticxar>
>>
>> <govertis1.png>
>>
>> Óscar Bou Bou
>> Socio - IT & GRC Management Services Director
>> m: +34 620 267 520 <tel:%2B34%20620%20267%20520>
>> s: <http://www.govertis.com/>www.govertis.com <http://www.govertis.com/> e:
>> [email protected] <mailto:[email protected]>
>>
>> LinkedIn: https://www.linkedin.com/in/oscarbou
>> <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.
>>
>>
>>
>>
>>
>> --
>>
>> José Alejandro Manaure
>> Project Manager
>> Tel: (57) 1 703 17 77
>> Cel: (57) 312 5476188
>> E-mail: [email protected] <mailto:[email protected]>
>> Calle 93 # 19b - 66 Ofc 202
>> Bogotá D.C., Colombia
>> www.ticxar.com <http://www.ticxar.com/>
>> <https://www.facebook.com/pages/Ticxar/446503822192581>
>> <http://twitter.com/ticxar> <https://www.linkedin.com/company/ticxar>
>
>
>
>
> Óscar Bou Bou
> Socio - IT & GRC Management Services Director
> m: +34 620 267 520 <tel:%2B34%20620%20267%20520>
> s: <http://www.govertis.com/>www.govertis.com <http://www.govertis.com/> e:
> [email protected] <mailto:[email protected]>
>
> LinkedIn: https://www.linkedin.com/in/oscarbou
> <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.
>
>
>
>
>
> --
>
> José Alejandro Manaure
> Project Manager
> Tel: (57) 1 703 17 77
> Cel: (57) 312 5476188
> E-mail: [email protected] <mailto:[email protected]>
> Calle 93 # 19b - 66 Ofc 202
> Bogotá D.C., Colombia
> www.ticxar.com <http://www.ticxar.com/>
> <https://www.facebook.com/pages/Ticxar/446503822192581>
> <http://twitter.com/ticxar> <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 <http://www.govertis.com/> e:
[email protected] <mailto:[email protected]>
LinkedIn: https://www.linkedin.com/in/oscarbou
<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.