Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3
In all cases, thks a lot for helping me because I was absolutely unable to find a solution. I will try to test what u suggest but I must admit that I am a little bit frustrated and disappointed with the ModelDriven interface. I am also trying to do the same thing with Spring, I hope to be more lucky ;-) bruno -- From: "adam pinder" Sent: Thursday, April 01, 2010 6:19 PM To: Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 so it looks like your issue is more to do with the child values not being set by Struts there have been a few postings about using the [] notation on field names to get struts to assign the values properly. in struts1 i found it worked fine, however in struts2 i've not really seen it working... in some of my actions i have actually added a method which gets the parameter values off the request and populates the objects myself.. e.g. look for parameter names starting parent.values and use the parameter name/value to construct the correct call to set the object. seems unnecessary as struts2 should handle it, but as i say i couldn't get it to do it with arraylists i was using. From: brgrandj...@live.fr To: user@struts.apache.org Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 Date: Thu, 1 Apr 2010 15:16:36 +0200 Thks a lot Adam it is now more concise: Setting params Setting params id => [ 1 ] Setting params id => [ 1 ] method:saveOrUpdate => [ Submit ] name => [ Parent1 ] parent.values[0].id => [ 2 ] parent.values[0].name => [ Child2 ] parent.values[1].id => [ 1 ] parent.values[1].name => [ Child1 ] Error setting value ognl.NoSuchPropertyException: java.util.HashSet.0 at ognl.SetPropertyAccessor.getProperty(SetPropertyAccessor.java:67) at com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor.getProperty(XWorkCollectionPropertyAccessor.java:80) at java.lang.Thread.run(Unknown Source) .. Error setting value ognl.NoSuchPropertyException: java.util.HashSet.0 at ognl.SetPropertyAccessor.getProperty(SetPropertyAccessor.java:67) .. Error setting value ognl.NoSuchPropertyException: java.util.HashSet.1 at ognl.SetPropertyAccessor.getProperty(SetPropertyAccessor.java:67) at com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor.getProperty(XWorkCollectionPropertyAccessor.java:80) .. Error setting value ognl.NoSuchPropertyException: java.util.HashSet.1 at ognl.SetPropertyAccessor.getProperty(SetPropertyAccessor.java:67) at com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor.getProperty(XWorkCollectionPropertyAccessor.java:80) at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1643) .. Setting params Do u see something wrong?? From: apin...@hotmail.co.uk To: user@struts.apache.org Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 Date: Thu, 1 Apr 2010 13:54:58 +0100 set the rootlogger to warn log4j.rootLogger=warn, stdout rather than debug you should only get a parameterinterceptor log entry every time you post something to the server From: brgrandj...@live.fr To: user@struts.apache.org Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 Date: Thu, 1 Apr 2010 14:51:40 +0200 thks adam but I got now thousand & thousand of lines I am afraid that I won't be able to read its before the end of the world in 2012.. I saw very quicky an exception at the beginning.. How can I limit this huge quantity of lines? here is my log4j.properties file: log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.rootLogger=debug, stdout log4j.logger.com.opensymphony.xwork2.interceptor.ParametersInterceptor=debug From: apin...@hotmail.co.uk To: user@struts.apache.org Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 Date: Thu, 1 Apr 2010 12:57:39 +0100 in log4j.properties file (same location as struts.xml and hibernate config files) add log4j.logger.com.opensymphony.xwork2.interceptor.ParametersInterceptor=debug this will output param name/value pairs being posted from your page. From: brgrandj...@live.fr To: user@struts.apache.org Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 Date: Thu, 1 Apr 2010 13:54:33 +0200 Dear Adam, I just added a public Child getValues(int idx) in the Parent class definition but it is never called. Could u explain to me where and how can I turn on the parameterinterceptor logging? In the struts.xml file? thks a lot bruno From: apin...@hotmail.co.uk To: user
RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3
so it looks like your issue is more to do with the child values not being set by Struts there have been a few postings about using the [] notation on field names to get struts to assign the values properly. in struts1 i found it worked fine, however in struts2 i've not really seen it working... in some of my actions i have actually added a method which gets the parameter values off the request and populates the objects myself.. e.g. look for parameter names starting parent.values and use the parameter name/value to construct the correct call to set the object. seems unnecessary as struts2 should handle it, but as i say i couldn't get it to do it with arraylists i was using. > From: brgrandj...@live.fr > To: user@struts.apache.org > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > Date: Thu, 1 Apr 2010 15:16:36 +0200 > > > Thks a lot Adam it is now more concise: > > > > Setting params > Setting params id => [ 1 ] > Setting params id => [ 1 ] method:saveOrUpdate => [ Submit ] name => [ > Parent1 ] parent.values[0].id => [ 2 ] parent.values[0].name => [ Child2 ] > parent.values[1].id => [ 1 ] parent.values[1].name => [ Child1 ] > > > > Error setting value > ognl.NoSuchPropertyException: java.util.HashSet.0 > at ognl.SetPropertyAccessor.getProperty(SetPropertyAccessor.java:67) > at > com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor.getProperty(XWorkCollectionPropertyAccessor.java:80) > at java.lang.Thread.run(Unknown Source) > .. > Error setting value > ognl.NoSuchPropertyException: java.util.HashSet.0 > at ognl.SetPropertyAccessor.getProperty(SetPropertyAccessor.java:67) > .. > Error setting value > ognl.NoSuchPropertyException: java.util.HashSet.1 > at ognl.SetPropertyAccessor.getProperty(SetPropertyAccessor.java:67) > at > com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor.getProperty(XWorkCollectionPropertyAccessor.java:80) > .. > Error setting value > ognl.NoSuchPropertyException: java.util.HashSet.1 > at ognl.SetPropertyAccessor.getProperty(SetPropertyAccessor.java:67) > at > com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor.getProperty(XWorkCollectionPropertyAccessor.java:80) > at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1643) > .. > > Setting params > > Do u see something wrong?? > > > > >> From: apin...@hotmail.co.uk >> To: user@struts.apache.org >> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 >> Date: Thu, 1 Apr 2010 13:54:58 +0100 >> >> >> >> set the rootlogger to warn >> >> log4j.rootLogger=warn, stdout >> >> rather than debug >> >> you should only get a parameterinterceptor log entry every time you post >> something to the server >> >> >>> From: brgrandj...@live.fr >>> To: user@struts.apache.org >>> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 >>> Date: Thu, 1 Apr 2010 14:51:40 +0200 >>> >>> >>> thks adam but I got now thousand & thousand of lines >>> >>> I am afraid that I won't be able to read its before the end of the world in >>> 2012.. >>> >>> >>> >>> I saw very quicky an exception at the beginning.. >>> >>> How can I limit this huge quantity of lines? >>> >>> >>> >>> here is my log4j.properties file: >>> >>> >>> >>> log4j.appender.stdout=org.apache.log4j.ConsoleAppender >>> log4j.appender.stdout.Target=System.out >>> log4j.appender.stdout.layout=org.apache.log4j.PatternLayout >>> log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - >>> %m%n >>> log4j.rootLogger=debug, stdout >>> log4j.logger.com.opensymphony.xwork2.interceptor.ParametersInterceptor=debug >>> >>> >>> >>> >>> >>> >>> >>>> From: apin...@hotmail.co.uk >>>> To: user@struts.apache.org >>>> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 >>>> Date: Thu, 1 Apr 2010 12:57:39 +0100 >>>> >>>> >>>> >>>> >>>> in log4j.properties file (same location as struts.xml and hibernate config >>>> files) >>>> >>>> add >>>> >>>> log4j.logger.com.opensymphony.xwork2.interceptor.ParametersInterceptor=debug >>>> >>>> this wi
RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3
Here is my Child class definition: @Entity @Table(name="CHILD") public class Child { private Long id; private String name; @Id @GeneratedValue @Column(name="CHILD_ID") public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column(name="NAME") public String getName() { return name; } public void setName(String val) { name = val; } } and Parent definition: @Entity @Table(name="PARENT") public class Parent { private Long id; private String name; private Set values = new HashSet(); @Id @GeneratedValue @Column(name="PARENT_ID") public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column(name="NAME") public String getName() { return name; } public void setName(String val) { name = val; } @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinTable(name = "PARENT_CHILD", joinColumns = { @JoinColumn(name = "PARENT_ID") }, inverseJoinColumns = { @JoinColumn(name = "CHILD_ID") }) public Set getValues() { return values; } public Child getValues(Long idx) { // NEVER CALLED! for ( Iterator iter = values.iterator(); iter.hasNext();) { Child c = (Child) iter.next(); if (c.getId() == idx) return c; } return null; } public void setValues(Set lst) { values = lst; } } So I do not understand the ognl.NoSuchPropertyException I got after submission.. > From: apin...@hotmail.co.uk > To: user@struts.apache.org > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > Date: Thu, 1 Apr 2010 13:54:58 +0100 > > > > set the rootlogger to warn > > log4j.rootLogger=warn, stdout > > rather than debug > > you should only get a parameterinterceptor log entry every time you post > something to the server > > ---------------- > > From: brgrandj...@live.fr > > To: user@struts.apache.org > > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > > Date: Thu, 1 Apr 2010 14:51:40 +0200 > > > > > > thks adam but I got now thousand & thousand of lines > > > > I am afraid that I won't be able to read its before the end of the world in > > 2012.. > > > > > > > > I saw very quicky an exception at the beginning.. > > > > How can I limit this huge quantity of lines? > > > > > > > > here is my log4j.properties file: > > > > > > > > log4j.appender.stdout=org.apache.log4j.ConsoleAppender > > log4j.appender.stdout.Target=System.out > > log4j.appender.stdout.layout=org.apache.log4j.PatternLayout > > log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - > > %m%n > > log4j.rootLogger=debug, stdout > > log4j.logger.com.opensymphony.xwork2.interceptor.ParametersInterceptor=debug > > > > > > > > > > > > > > > >> From: apin...@hotmail.co.uk > >> To: user@struts.apache.org > >> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > >> Date: Thu, 1 Apr 2010 12:57:39 +0100 > >> > >> > >> > >> > >> in log4j.properties file (same location as struts.xml and hibernate config > >> files) > >> > >> add > >> > >> log4j.logger.com.opensymphony.xwork2.interceptor.ParametersInterceptor=debug > >> > >> this will output param name/value pairs being posted from your page. > >> > >> > >> > >> > >>> From: brgrandj...@live.fr > >>> To: user@struts.apache.org > >>> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate > >>> 3 > >>> Date: Thu, 1 Apr 2010 13:54:33 +0200 > >>> > >>> > >>> Dear Adam, > >>> > >>> > >>> > >>> I just added a public Child getValues(int idx) in the Parent class > >>> definition but it is never called. > >>> > >>> > >>> > >>> Could u explain to me where and how can I turn on the > >>> parameterinterceptor logging? In the struts.xml file? > >>> > >>> > >>> > >>> thks a lot > >>> > >>> > >>> bruno > >>> > >>> > >>> > >>> > >>> > >>>> From: apin...@hotmail.co.uk > >>>> To: user@struts.apache.org > >>>> Subject: RE: CRUD with a OneToMany association under Struts 2 / > >>>> Hibernate 3 > >>>> Date: Thu, 1 Apr 201
RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3
Thks a lot Adam it is now more concise: Setting params Setting params id => [ 1 ] Setting params id => [ 1 ] method:saveOrUpdate => [ Submit ] name => [ Parent1 ] parent.values[0].id => [ 2 ] parent.values[0].name => [ Child2 ] parent.values[1].id => [ 1 ] parent.values[1].name => [ Child1 ] Error setting value ognl.NoSuchPropertyException: java.util.HashSet.0 at ognl.SetPropertyAccessor.getProperty(SetPropertyAccessor.java:67) at com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor.getProperty(XWorkCollectionPropertyAccessor.java:80) at java.lang.Thread.run(Unknown Source) .. Error setting value ognl.NoSuchPropertyException: java.util.HashSet.0 at ognl.SetPropertyAccessor.getProperty(SetPropertyAccessor.java:67) .. Error setting value ognl.NoSuchPropertyException: java.util.HashSet.1 at ognl.SetPropertyAccessor.getProperty(SetPropertyAccessor.java:67) at com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor.getProperty(XWorkCollectionPropertyAccessor.java:80) .. Error setting value ognl.NoSuchPropertyException: java.util.HashSet.1 at ognl.SetPropertyAccessor.getProperty(SetPropertyAccessor.java:67) at com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor.getProperty(XWorkCollectionPropertyAccessor.java:80) at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1643) .. Setting params Do u see something wrong?? > From: apin...@hotmail.co.uk > To: user@struts.apache.org > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > Date: Thu, 1 Apr 2010 13:54:58 +0100 > > > > set the rootlogger to warn > > log4j.rootLogger=warn, stdout > > rather than debug > > you should only get a parameterinterceptor log entry every time you post > something to the server > > > > From: brgrandj...@live.fr > > To: user@struts.apache.org > > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > > Date: Thu, 1 Apr 2010 14:51:40 +0200 > > > > > > thks adam but I got now thousand & thousand of lines > > > > I am afraid that I won't be able to read its before the end of the world in > > 2012.. > > > > > > > > I saw very quicky an exception at the beginning.. > > > > How can I limit this huge quantity of lines? > > > > > > > > here is my log4j.properties file: > > > > > > > > log4j.appender.stdout=org.apache.log4j.ConsoleAppender > > log4j.appender.stdout.Target=System.out > > log4j.appender.stdout.layout=org.apache.log4j.PatternLayout > > log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - > > %m%n > > log4j.rootLogger=debug, stdout > > log4j.logger.com.opensymphony.xwork2.interceptor.ParametersInterceptor=debug > > > > > > > > > > > > > > > >> From: apin...@hotmail.co.uk > >> To: user@struts.apache.org > >> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > >> Date: Thu, 1 Apr 2010 12:57:39 +0100 > >> > >> > >> > >> > >> in log4j.properties file (same location as struts.xml and hibernate config > >> files) > >> > >> add > >> > >> log4j.logger.com.opensymphony.xwork2.interceptor.ParametersInterceptor=debug > >> > >> this will output param name/value pairs being posted from your page. > >> > >> > >> > >> > >>> From: brgrandj...@live.fr > >>> To: user@struts.apache.org > >>> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate > >>> 3 > >>> Date: Thu, 1 Apr 2010 13:54:33 +0200 > >>> > >>> > >>> Dear Adam, > >>> > >>> > >>> > >>> I just added a public Child getValues(int idx) in the Parent class > >>> definition but it is never called. > >>> > >>> > >>> > >>> Could u explain to me where and how can I turn on the > >>> parameterinterceptor logging? In the struts.xml file? > >>> > >>> > >>> > >>> thks a lot > >>> > >>> > >>> bruno > >>> > >>> > >>> > >>> > >>> > >>>> From: apin...@hotmail.co.uk > >>>> To: user@struts.apache.org > >>>> Subject: RE: CRUD with a OneToMany association under Struts 2 / > >>>> Hibernate 3 > >>>> Date: Thu, 1 Apr 2
RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3
Here are exceptions I got after submitting: Entering getProperty() Error setting value ognl.NoSuchPropertyException: java.util.HashSet.0 ... Entering getProperty() Error setting value ognl.NoSuchPropertyException: java.util.HashSet.0 at ognl.SetPropertyAccessor.getProperty(SetPropertyAccessor.java:67) .. Entering getProperty() Error setting value ognl.NoSuchPropertyException: java.util.HashSet.1 at ognl.SetPropertyAccessor.getProperty(SetPropertyAccessor.java:67) .. Entering getProperty() Error setting value ognl.NoSuchPropertyException: java.util.HashSet.1 at ognl.SetPropertyAccessor.getProperty(SetPropertyAccessor.java:67) .. Hibernate Validation in class com.metacrud.web.ParentAction Hibernate Validation found no erros. Executing action method = saveOrUpdate Redirecting to finalLocation /Metacrud/listParent after Locale=fr intercept } processing flush-time cascades dirty checking collections Collection found: [com.metacrud.domain.Parent.values#1], was: [] (initialized) Flushed: 0 insertions, 1 updates, 0 deletions to 1 objects Flushed: 1 (re)creations, 0 updates, 1 removals to 1 collections listing entities: com.metacrud.domain.Parent{id=1, values=[], name=Parent1} about to open PreparedStatement (open PreparedStatements: 0, globally: 0) update PARENT set NAME=? where PARENT_ID=? Executing batch size: 1 about to close PreparedStatement (open PreparedStatements: 1, globally: 1) Deleting collection: [com.metacrud.domain.Parent.values#1] about to open PreparedStatement (open PreparedStatements: 0, globally: 0) delete from PARENT_CHILD where PARENT_ID=? done deleting collection > From: apin...@hotmail.co.uk > To: user@struts.apache.org > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > Date: Thu, 1 Apr 2010 12:57:39 +0100 > > > > > in log4j.properties file (same location as struts.xml and hibernate config > files) > > add > > log4j.logger.com.opensymphony.xwork2.interceptor.ParametersInterceptor=debug > > this will output param name/value pairs being posted from your page. > > > > > > From: brgrandj...@live.fr > > To: user@struts.apache.org > > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > > Date: Thu, 1 Apr 2010 13:54:33 +0200 > > > > > > Dear Adam, > > > > > > > > I just added a public Child getValues(int idx) in the Parent class > > definition but it is never called. > > > > > > > > Could u explain to me where and how can I turn on the parameterinterceptor > > logging? In the struts.xml file? > > > > > > > > thks a lot > > > > > > bruno > > > > > > > > > > > >> From: apin...@hotmail.co.uk > >> To: user@struts.apache.org > >> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > >> Date: Thu, 1 Apr 2010 12:18:48 +0100 > >> > >> > >> > >> > >> turn on the parameterinterceptor logging and make sure as mentioned that > >> > >> 1) the values you expect for each child are being sent to the server (id > >> and name) > >> 2) the parameter names are correct for setting each child > >> > >> i had some issues getting lists of items to be updated by form submission > >> alone. > >> > >> for example does your parent object have a getValues method taking an > >> index value > >> > >> getParent().getValues(1).setId(1) > >> getParent().getValues(1).setName("bob") > >> > >> would be called by parameterinterceptor > >> > >> > >> > >>> From: brgrandj...@live.fr > >>> To: user@struts.apache.org > >>> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate > >>> 3 > >>> Date: Thu, 1 Apr 2010 12:16:09 +0200 > >>> > >>> > >>> Dear René > >>> > >>> > >>> > >>> I changed my jsp page so as to integrate the following block: > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> which generates the following html code: > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> >
RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3
set the rootlogger to warn log4j.rootLogger=warn, stdout rather than debug you should only get a parameterinterceptor log entry every time you post something to the server > From: brgrandj...@live.fr > To: user@struts.apache.org > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > Date: Thu, 1 Apr 2010 14:51:40 +0200 > > > thks adam but I got now thousand & thousand of lines > > I am afraid that I won't be able to read its before the end of the world in > 2012.. > > > > I saw very quicky an exception at the beginning.. > > How can I limit this huge quantity of lines? > > > > here is my log4j.properties file: > > > > log4j.appender.stdout=org.apache.log4j.ConsoleAppender > log4j.appender.stdout.Target=System.out > log4j.appender.stdout.layout=org.apache.log4j.PatternLayout > log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - > %m%n > log4j.rootLogger=debug, stdout > log4j.logger.com.opensymphony.xwork2.interceptor.ParametersInterceptor=debug > > > > > > > >> From: apin...@hotmail.co.uk >> To: user@struts.apache.org >> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 >> Date: Thu, 1 Apr 2010 12:57:39 +0100 >> >> >> >> >> in log4j.properties file (same location as struts.xml and hibernate config >> files) >> >> add >> >> log4j.logger.com.opensymphony.xwork2.interceptor.ParametersInterceptor=debug >> >> this will output param name/value pairs being posted from your page. >> >> >> >> >>> From: brgrandj...@live.fr >>> To: user@struts.apache.org >>> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 >>> Date: Thu, 1 Apr 2010 13:54:33 +0200 >>> >>> >>> Dear Adam, >>> >>> >>> >>> I just added a public Child getValues(int idx) in the Parent class >>> definition but it is never called. >>> >>> >>> >>> Could u explain to me where and how can I turn on the parameterinterceptor >>> logging? In the struts.xml file? >>> >>> >>> >>> thks a lot >>> >>> >>> bruno >>> >>> >>> >>> >>> >>>> From: apin...@hotmail.co.uk >>>> To: user@struts.apache.org >>>> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 >>>> Date: Thu, 1 Apr 2010 12:18:48 +0100 >>>> >>>> >>>> >>>> >>>> turn on the parameterinterceptor logging and make sure as mentioned that >>>> >>>> 1) the values you expect for each child are being sent to the server (id >>>> and name) >>>> 2) the parameter names are correct for setting each child >>>> >>>> i had some issues getting lists of items to be updated by form submission >>>> alone. >>>> >>>> for example does your parent object have a getValues method taking an >>>> index value >>>> >>>> getParent().getValues(1).setId(1) >>>> getParent().getValues(1).setName("bob") >>>> >>>> would be called by parameterinterceptor >>>> >>>> >>>> >>>>> From: brgrandj...@live.fr >>>>> To: user@struts.apache.org >>>>> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate >>>>> 3 >>>>> Date: Thu, 1 Apr 2010 12:16:09 +0200 >>>>> >>>>> >>>>> Dear René >>>>> >>>>> >>>>> >>>>> I changed my jsp page so as to integrate the following block: >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> which generates the following html code: >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>>
RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3
thks adam but I got now thousand & thousand of lines I am afraid that I won't be able to read its before the end of the world in 2012.. I saw very quicky an exception at the beginning.. How can I limit this huge quantity of lines? here is my log4j.properties file: log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.rootLogger=debug, stdout log4j.logger.com.opensymphony.xwork2.interceptor.ParametersInterceptor=debug > From: apin...@hotmail.co.uk > To: user@struts.apache.org > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > Date: Thu, 1 Apr 2010 12:57:39 +0100 > > > > > in log4j.properties file (same location as struts.xml and hibernate config > files) > > add > > log4j.logger.com.opensymphony.xwork2.interceptor.ParametersInterceptor=debug > > this will output param name/value pairs being posted from your page. > > > > > > From: brgrandj...@live.fr > > To: user@struts.apache.org > > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > > Date: Thu, 1 Apr 2010 13:54:33 +0200 > > > > > > Dear Adam, > > > > > > > > I just added a public Child getValues(int idx) in the Parent class > > definition but it is never called. > > > > > > > > Could u explain to me where and how can I turn on the parameterinterceptor > > logging? In the struts.xml file? > > > > > > > > thks a lot > > > > > > bruno > > > > > > > > > > > >> From: apin...@hotmail.co.uk > >> To: user@struts.apache.org > >> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > >> Date: Thu, 1 Apr 2010 12:18:48 +0100 > >> > >> > >> > >> > >> turn on the parameterinterceptor logging and make sure as mentioned that > >> > >> 1) the values you expect for each child are being sent to the server (id > >> and name) > >> 2) the parameter names are correct for setting each child > >> > >> i had some issues getting lists of items to be updated by form submission > >> alone. > >> > >> for example does your parent object have a getValues method taking an > >> index value > >> > >> getParent().getValues(1).setId(1) > >> getParent().getValues(1).setName("bob") > >> > >> would be called by parameterinterceptor > >> > >> > >> > >>> From: brgrandj...@live.fr > >>> To: user@struts.apache.org > >>> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate > >>> 3 > >>> Date: Thu, 1 Apr 2010 12:16:09 +0200 > >>> > >>> > >>> Dear René > >>> > >>> > >>> > >>> I changed my jsp page so as to integrate the following block: > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> which generates the following html code: > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> I can display my complete Child Set but I got the same result after > >>> updating: my Child Set is empty. > >>> > >>> > >>> > >>> Is that necessary to modify my ParentAction as well? If yes what to do? > >>> > >>> > >>> > >>> public class ParentAction extends ActionSupport implements ModelDriven { > >>> > >>> private static final long serialVersionUID = -2662966220408285700L; > >>> private Parent cl = new Parent(); > >>> private List clList = new ArrayList(); > >>> private ParentDAO clDAO = new ParentDAOImpl(); > >>> > >>> @Override > >>> public Parent getModel() { > >>> return cl; > >>> } > >
RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3
in log4j.properties file (same location as struts.xml and hibernate config files) add log4j.logger.com.opensymphony.xwork2.interceptor.ParametersInterceptor=debug this will output param name/value pairs being posted from your page. > From: brgrandj...@live.fr > To: user@struts.apache.org > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > Date: Thu, 1 Apr 2010 13:54:33 +0200 > > > Dear Adam, > > > > I just added a public Child getValues(int idx) in the Parent class definition > but it is never called. > > > > Could u explain to me where and how can I turn on the parameterinterceptor > logging? In the struts.xml file? > > > > thks a lot > > > bruno > > > > > >> From: apin...@hotmail.co.uk >> To: user@struts.apache.org >> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 >> Date: Thu, 1 Apr 2010 12:18:48 +0100 >> >> >> >> >> turn on the parameterinterceptor logging and make sure as mentioned that >> >> 1) the values you expect for each child are being sent to the server (id and >> name) >> 2) the parameter names are correct for setting each child >> >> i had some issues getting lists of items to be updated by form submission >> alone. >> >> for example does your parent object have a getValues method taking an index >> value >> >> getParent().getValues(1).setId(1) >> getParent().getValues(1).setName("bob") >> >> would be called by parameterinterceptor >> >> >> >>> From: brgrandj...@live.fr >>> To: user@struts.apache.org >>> Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 >>> Date: Thu, 1 Apr 2010 12:16:09 +0200 >>> >>> >>> Dear René >>> >>> >>> >>> I changed my jsp page so as to integrate the following block: >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> which generates the following html code: >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> I can display my complete Child Set but I got the same result after >>> updating: my Child Set is empty. >>> >>> >>> >>> Is that necessary to modify my ParentAction as well? If yes what to do? >>> >>> >>> >>> public class ParentAction extends ActionSupport implements ModelDriven { >>> >>> private static final long serialVersionUID = -2662966220408285700L; >>> private Parent cl = new Parent(); >>> private List clList = new ArrayList(); >>> private ParentDAO clDAO = new ParentDAOImpl(); >>> >>> @Override >>> public Parent getModel() { >>> return cl; >>> } >>> >>> public String saveOrUpdate() >>> { // cl.values is empty here!! >>> clDAO.saveOrUpdateParent(cl); >>> return SUCCESS; >>> } >>> >>> public String save() >>> { >>> clDAO.saveParent(cl); >>> return SUCCESS; >>> } >>> >>> public String list() >>> { >>> clList = clDAO.listParent(); >>> return SUCCESS; >>> } >>> >>> public String delete() >>> { >>> HttpServletRequest request = (HttpServletRequest) >>> ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); >>> clDAO.deleteParent(Long.parseLong(request.getParameter("id"))); >>> return SUCCESS; >>> } >>> >>> public String edit() >>> { // cl.values contains some valid Child elements here!! >>> HttpServletRequest request = (HttpServletRequest) >>> ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); >>> cl = clDAO.listParentById(Long.parseLong(request.getParameter("id"))); >>> } >>> return SUCCESS; >>> } >>> >>> public Parent getParent() { >>> return cl; >>> } >>> >>> public void setParent(Parent cl) { >>> this.cl = cl; >>> } >>> >>> public List getParentList() { >>> return clList; >>> } >>> >>> publ
RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3
Dear Adam, I just added a public Child getValues(int idx) in the Parent class definition but it is never called. Could u explain to me where and how can I turn on the parameterinterceptor logging? In the struts.xml file? thks a lot bruno > From: apin...@hotmail.co.uk > To: user@struts.apache.org > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > Date: Thu, 1 Apr 2010 12:18:48 +0100 > > > > > turn on the parameterinterceptor logging and make sure as mentioned that > > 1) the values you expect for each child are being sent to the server (id and > name) > 2) the parameter names are correct for setting each child > > i had some issues getting lists of items to be updated by form submission > alone. > > for example does your parent object have a getValues method taking an index > value > > getParent().getValues(1).setId(1) > getParent().getValues(1).setName("bob") > > would be called by parameterinterceptor > > > -------- > > From: brgrandj...@live.fr > > To: user@struts.apache.org > > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > > Date: Thu, 1 Apr 2010 12:16:09 +0200 > > > > > > Dear René > > > > > > > > I changed my jsp page so as to integrate the following block: > > > > > > > > > > > > > > > > > > > > > > which generates the following html code: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I can display my complete Child Set but I got the same result after > > updating: my Child Set is empty. > > > > > > > > Is that necessary to modify my ParentAction as well? If yes what to do? > > > > > > > > public class ParentAction extends ActionSupport implements ModelDriven { > > > > private static final long serialVersionUID = -2662966220408285700L; > > private Parent cl = new Parent(); > > private List clList = new ArrayList(); > > private ParentDAO clDAO = new ParentDAOImpl(); > > > > @Override > > public Parent getModel() { > > return cl; > > } > > > > public String saveOrUpdate() > > { // cl.values is empty here!! > > clDAO.saveOrUpdateParent(cl); > > return SUCCESS; > > } > > > > public String save() > > { > > clDAO.saveParent(cl); > > return SUCCESS; > > } > > > > public String list() > > { > > clList = clDAO.listParent(); > > return SUCCESS; > > } > > > > public String delete() > > { > > HttpServletRequest request = (HttpServletRequest) > > ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); > > clDAO.deleteParent(Long.parseLong(request.getParameter("id"))); > > return SUCCESS; > > } > > > > public String edit() > > { // cl.values contains some valid Child elements here!! > > HttpServletRequest request = (HttpServletRequest) > > ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); > > cl = clDAO.listParentById(Long.parseLong(request.getParameter("id"))); > > } > > return SUCCESS; > > } > > > > public Parent getParent() { > > return cl; > > } > > > > public void setParent(Parent cl) { > > this.cl = cl; > > } > > > > public List getParentList() { > > return clList; > > } > > > > public void setParentList(List clList) { > > this.clList = clList; > > } > > } > > > > > > > >> Date: Thu, 1 Apr 2010 11:30:23 +0200 > >> From: gie...@it-neering.net > >> To: user@struts.apache.org > >> Subject: Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > >> > >> Given the model you presented in the first post, your problem seems to > >> be that the posted values have not the correct name for the children's > >> form fields. The parameters names you would need are > >> > >> id > >> name > >> values[0].id > >> values[0].name > >> values[1].id > >> values[2].name > >> ... > >> > >> for the parameters interceptor to work properly when applying the posted > >> values. > >> > >> See here for more details: > >> http://struts.apache.org
RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3
turn on the parameterinterceptor logging and make sure as mentioned that 1) the values you expect for each child are being sent to the server (id and name) 2) the parameter names are correct for setting each child i had some issues getting lists of items to be updated by form submission alone. for example does your parent object have a getValues method taking an index value getParent().getValues(1).setId(1) getParent().getValues(1).setName("bob") would be called by parameterinterceptor > From: brgrandj...@live.fr > To: user@struts.apache.org > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > Date: Thu, 1 Apr 2010 12:16:09 +0200 > > > Dear René > > > > I changed my jsp page so as to integrate the following block: > > > > > > > > > > > which generates the following html code: > > > > > > > > > > > > > > > > > > > > > > > > > > > I can display my complete Child Set but I got the same result after updating: > my Child Set is empty. > > > > Is that necessary to modify my ParentAction as well? If yes what to do? > > > > public class ParentAction extends ActionSupport implements ModelDriven { > > private static final long serialVersionUID = -2662966220408285700L; > private Parent cl = new Parent(); > private List clList = new ArrayList(); > private ParentDAO clDAO = new ParentDAOImpl(); > > @Override > public Parent getModel() { > return cl; > } > > public String saveOrUpdate() > { // cl.values is empty here!! > clDAO.saveOrUpdateParent(cl); > return SUCCESS; > } > > public String save() > { > clDAO.saveParent(cl); > return SUCCESS; > } > > public String list() > { > clList = clDAO.listParent(); > return SUCCESS; > } > > public String delete() > { > HttpServletRequest request = (HttpServletRequest) > ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); > clDAO.deleteParent(Long.parseLong(request.getParameter("id"))); > return SUCCESS; > } > > public String edit() > { // cl.values contains some valid Child elements here!! > HttpServletRequest request = (HttpServletRequest) > ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); > cl = clDAO.listParentById(Long.parseLong(request.getParameter("id"))); > } > return SUCCESS; > } > > public Parent getParent() { > return cl; > } > > public void setParent(Parent cl) { > this.cl = cl; > } > > public List getParentList() { > return clList; > } > > public void setParentList(List clList) { > this.clList = clList; > } > } > > > >> Date: Thu, 1 Apr 2010 11:30:23 +0200 >> From: gie...@it-neering.net >> To: user@struts.apache.org >> Subject: Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3 >> >> Given the model you presented in the first post, your problem seems to >> be that the posted values have not the correct name for the children's >> form fields. The parameters names you would need are >> >> id >> name >> values[0].id >> values[0].name >> values[1].id >> values[2].name >> ... >> >> for the parameters interceptor to work properly when applying the posted >> values. >> >> See here for more details: >> http://struts.apache.org/2.1.8/docs/tabular-inputs.html >> >> - René >> >> bruno grandjean schrieb: >>> Dear Rene, >>> >>> Thks a lot for replying to me because I am feeling a little bit alone with >>> my CRUD ;-). In fact I am trying to build a dynamic MetaCrud. >>> My pb is simple: in the same jsp page I would like to update a Parent >>> object >>> and its Childs (values): >>> >>> >>> >>>>>> name="name" label="Nom" /> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> From an existing Parent object with many Childs objects I can easily modify >>> parent.name for instance but the collection of Child objects (values) is >>> always empty in the ParentAction (saveOrUpdate() method) after submitting. >>> However I can display each values[i].name in the jsp page with the correct >>> value. >>> So it is not an issue with Hibernate but with the jsp or ModelDriven >>> interface I don't know..Do you have any idea? >>> Basically I was not able to find a struts or spring documentation about >>>
RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3
Dear René I changed my jsp page so as to integrate the following block: which generates the following html code: I can display my complete Child Set but I got the same result after updating: my Child Set is empty. Is that necessary to modify my ParentAction as well? If yes what to do? public class ParentAction extends ActionSupport implements ModelDriven { private static final long serialVersionUID = -2662966220408285700L; private Parent cl = new Parent(); private List clList = new ArrayList(); private ParentDAO clDAO = new ParentDAOImpl(); @Override public Parent getModel() { return cl; } public String saveOrUpdate() { // cl.values is empty here!! clDAO.saveOrUpdateParent(cl); return SUCCESS; } public String save() { clDAO.saveParent(cl); return SUCCESS; } public String list() { clList = clDAO.listParent(); return SUCCESS; } public String delete() { HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); clDAO.deleteParent(Long.parseLong(request.getParameter("id"))); return SUCCESS; } public String edit() { // cl.values contains some valid Child elements here!! HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); cl = clDAO.listParentById(Long.parseLong(request.getParameter("id"))); } return SUCCESS; } public Parent getParent() { return cl; } public void setParent(Parent cl) { this.cl = cl; } public List getParentList() { return clList; } public void setParentList(List clList) { this.clList = clList; } } > Date: Thu, 1 Apr 2010 11:30:23 +0200 > From: gie...@it-neering.net > To: user@struts.apache.org > Subject: Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > > Given the model you presented in the first post, your problem seems to > be that the posted values have not the correct name for the children's > form fields. The parameters names you would need are > > id > name > values[0].id > values[0].name > values[1].id > values[2].name > ... > > for the parameters interceptor to work properly when applying the posted > values. > > See here for more details: > http://struts.apache.org/2.1.8/docs/tabular-inputs.html > > - René > > bruno grandjean schrieb: > > Dear Rene, > > > > Thks a lot for replying to me because I am feeling a little bit alone with > > my CRUD ;-). In fact I am trying to build a dynamic MetaCrud. > > My pb is simple: in the same jsp page I would like to update a Parent > > object > > and its Childs (values): > > > > > > > > > name="name" label="Nom" /> > > > > > > > > > > > > > > > > > > > > From an existing Parent object with many Childs objects I can easily modify > > parent.name for instance but the collection of Child objects (values) is > > always empty in the ParentAction (saveOrUpdate() method) after submitting. > > However I can display each values[i].name in the jsp page with the correct > > value. > > So it is not an issue with Hibernate but with the jsp or ModelDriven > > interface I don't know..Do you have any idea? > > Basically I was not able to find a struts or spring documentation about > > CRUD > > & association between two entities on the same jsp page. > > best regards > > bruno > > > > > > > > -- > > From: "Rene Gielen" > > Sent: Wednesday, March 31, 2010 7:12 PM > > To: "Struts Users Mailing List" > > Subject: Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > > > >> I'm not sure if I understand what your actual question is, nor whether > >> it is particularly Struts 2 related (rather than just Hibernate) - but > >> you might want to have a look in the CRUD demo section of the Struts 2 > >> showcase application. Maybe you will also find this demo useful: > >> http://github.com/rgielen/struts2crudevolutiondemo > >> > >> - René > >> > >> bruno grandjean schrieb: > >>> Hi > >>> > >>> I am trying to implement a simple CRUD with a OneToMany association > >>> under Struts 2 / Hibernate 3. > >>> I have two entities Parent and Child: > >>> > >>> @Entity > >>> @Table(name="PARENT") > >>> public class Parent { > >>> private Long id; > >>> private Set values = new HashSet(); > >>> .. > >>> @Entity > >>> @Table(na
Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3
Given the model you presented in the first post, your problem seems to be that the posted values have not the correct name for the children's form fields. The parameters names you would need are id name values[0].id values[0].name values[1].id values[2].name ... for the parameters interceptor to work properly when applying the posted values. See here for more details: http://struts.apache.org/2.1.8/docs/tabular-inputs.html - René bruno grandjean schrieb: > Dear Rene, > > Thks a lot for replying to me because I am feeling a little bit alone with > my CRUD ;-). In fact I am trying to build a dynamic MetaCrud. > My pb is simple: in the same jsp page I would like to update a Parent > object > and its Childs (values): > > > > name="name" label="Nom" /> > > > > > > > > > > From an existing Parent object with many Childs objects I can easily modify > parent.name for instance but the collection of Child objects (values) is > always empty in the ParentAction (saveOrUpdate() method) after submitting. > However I can display each values[i].name in the jsp page with the correct > value. > So it is not an issue with Hibernate but with the jsp or ModelDriven > interface I don't know..Do you have any idea? > Basically I was not able to find a struts or spring documentation about > CRUD > & association between two entities on the same jsp page. > best regards > bruno > > > > -------------- > From: "Rene Gielen" > Sent: Wednesday, March 31, 2010 7:12 PM > To: "Struts Users Mailing List" > Subject: Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > >> I'm not sure if I understand what your actual question is, nor whether >> it is particularly Struts 2 related (rather than just Hibernate) - but >> you might want to have a look in the CRUD demo section of the Struts 2 >> showcase application. Maybe you will also find this demo useful: >> http://github.com/rgielen/struts2crudevolutiondemo >> >> - René >> >> bruno grandjean schrieb: >>> Hi >>> >>> I am trying to implement a simple CRUD with a OneToMany association >>> under Struts 2 / Hibernate 3. >>> I have two entities Parent and Child: >>> >>> @Entity >>> @Table(name="PARENT") >>> public class Parent { >>> private Long id; >>> private Set values = new HashSet(); >>> .. >>> @Entity >>> @Table(name="CHILD") >>> public class Child { >>> private Long id; >>> private String name; >>> .. >>> >>> I can easily create, delete Parent or read the Child Set (values) but >>> it is impossible to update Child Set. >>> The jsp page (see below) reinit the values Set, no record after >>> updating! >>> Could u explain to me what's wrong? >>> >>> here are my code: >>> >>> @Entity >>> @Table(name="PARENT") >>> public class Parent { >>> private Long id; >>> private Set values = new HashSet(); >>> @Id >>> @GeneratedValue >>> @Column(name="PARENT_ID") >>> public Long getId() { >>> return id; >>> } >>> public void setId(Long id) { >>> this.id = id; >>> } >>> @ManyToMany(fetch = FetchType.EAGER) >>> @JoinTable(name = "PARENT_CHILD", joinColumns = { @JoinColumn(name = >>> "PARENT_ID") }, inverseJoinColumns = { @JoinColumn(name = "CHILD_ID") }) >>> public Set getValues() { >>> return values; >>> } >>> public void setValues(Set lst) { >>> values = lst; >>> } >>> } >>> >>> @Entity >>> @Table(name="CHILD") >>> public class Child { >>> private Long id; >>> private String name; >>> @Id >>> @GeneratedValue >>> @Column(name="CHILD_ID") >>> public Long getId() { >>> return id; >>> } >>> public void setId(Long id) { >>> this.id = id; >>> } >>> @Column(name="NAME") >>> public String getName() { >>> return name; >>> } >>> public void setName(String val) { >>> name = val; >>> } >>> } >>> >>> public interface ParentDAO { >>> public void saveOrUpdateParent(Parent cl); >>> public void saveParent(Parent cl); >>>
RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3
Dear Adam, I wrote a CascadeType.ALL in my @OneToMany annotation: @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinTable(name = "PARENT_CHILD", joinColumns = { @JoinColumn(name = "PARENT_ID") }, inverseJoinColumns = { @JoinColumn(name = "CHILD_ID") }) public Set getValues() { return values;} but I got unfortunately the same result. Before running the application I execute the following hsqldb script: insert into CHILD (CHILD_ID, NAME) values (1, 'Child1'); insert into CHILD (CHILD_ID, NAME) values (2, 'Child2'); insert into PARENT (PARENT_ID, NAME) values (1, 'Parent1'); insert into PARENT_CHILD (PARENT_ID, CHILD_ID) values (1, 1); insert into PARENT_CHILD (PARENT_ID, CHILD_ID) values (1, 2); After that, in the jsp page I have no pb to modify the fields: 1 Nom: Parent1 Id: 1 Nom: Child1 Id: 2 Nom: Child 2 s:form action="saveOrUpdateParent"> I do not modify any keys which are auto-generated with Hibernate annotations: @Id @GeneratedValue Iin debug mode just after clicking the submit button the size of Child Set is 0, I lost all my Child objects which is abnormal. After running the session.saveOrUpdate(parent) method the hibernate trace is: Hibernate: update PARENT set NAME=? where PARENT_ID=? Hibernate: delete from PARENT_CHILD where PARENT_ID=? So I am little bit lost because I do not know how to keep my Child Set alive.. All the best Bruno > From: apin...@hotmail.co.uk > To: user@struts.apache.org > Subject: RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > Date: Thu, 1 Apr 2010 07:46:59 +0100 > > > > have you got the correct cascade setting on the parent object > > i use the xml files for hibernate rather than the @ syntax in java classes > and i can set cascade="all" which means when i save/update the parent the > children are also saved or updated. > > also remember that for hibernate to realise the children need to be updated > rather than saved, the child object needs to have a primary key set otherwise > it will want to do a save ... and if cascade was only update then nothing > would be done with child objects. > > turn on debugging of sql in hibernate config file to see if any sql to > update/save children is actually being created. > > > > ---------------- > > From: brgrandj...@live.fr > > To: user@struts.apache.org > > Subject: Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > > Date: Wed, 31 Mar 2010 22:15:34 +0200 > > > > Dear Rene, > > > > Thks a lot for replying to me because I am feeling a little bit alone with > > my CRUD ;-). In fact I am trying to build a dynamic MetaCrud. > > My pb is simple: in the same jsp page I would like to update a Parent object > > and its Childs (values): > > > > > > > >> name="name" label="Nom" /> > > > > > > > > > > > > > > > > > > > > From an existing Parent object with many Childs objects I can easily modify > > parent.name for instance but the collection of Child objects (values) is > > always empty in the ParentAction (saveOrUpdate() method) after submitting. > > However I can display each values[i].name in the jsp page with the correct > > value. > > So it is not an issue with Hibernate but with the jsp or ModelDriven > > interface I don't know..Do you have any idea? > > Basically I was not able to find a struts or spring documentation about CRUD > > & association between two entities on the same jsp page. > > best regards > > bruno > > > > > > > > -- > > From: "Rene Gielen" > > Sent: Wednesday, March 31, 2010 7:12 PM > > To: "Struts Users Mailing List" > > Subject: Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > > > >> I'm not sure if I understand what your actual question is, nor whether > >> it is particularly Struts 2 related (rather than just Hibernate) - but > >> you might want to have a look in the CRUD demo section of the Struts 2 > >> showcase application. Maybe you will also find this demo useful: > >> http://github.com/rgielen/struts2crudevolutiondemo > >> > >> - René > >> > >> bruno grandjean schrieb: > >>> Hi > >>> > >>> I am trying to implement a simple CRUD with a OneToMany association under > >>> Struts 2 / Hibernate 3. > >>> I have two entities Parent and Child: > >>> > >&g
RE: CRUD with a OneToMany association under Struts 2 / Hibernate 3
have you got the correct cascade setting on the parent object i use the xml files for hibernate rather than the @ syntax in java classes and i can set cascade="all" which means when i save/update the parent the children are also saved or updated. also remember that for hibernate to realise the children need to be updated rather than saved, the child object needs to have a primary key set otherwise it will want to do a save ... and if cascade was only update then nothing would be done with child objects. turn on debugging of sql in hibernate config file to see if any sql to update/save children is actually being created. > From: brgrandj...@live.fr > To: user@struts.apache.org > Subject: Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > Date: Wed, 31 Mar 2010 22:15:34 +0200 > > Dear Rene, > > Thks a lot for replying to me because I am feeling a little bit alone with > my CRUD ;-). In fact I am trying to build a dynamic MetaCrud. > My pb is simple: in the same jsp page I would like to update a Parent object > and its Childs (values): > > > >> name="name" label="Nom" /> > > > > > > > > > > From an existing Parent object with many Childs objects I can easily modify > parent.name for instance but the collection of Child objects (values) is > always empty in the ParentAction (saveOrUpdate() method) after submitting. > However I can display each values[i].name in the jsp page with the correct > value. > So it is not an issue with Hibernate but with the jsp or ModelDriven > interface I don't know..Do you have any idea? > Basically I was not able to find a struts or spring documentation about CRUD > & association between two entities on the same jsp page. > best regards > bruno > > > > ------------------ > From: "Rene Gielen" > Sent: Wednesday, March 31, 2010 7:12 PM > To: "Struts Users Mailing List" > Subject: Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3 > >> I'm not sure if I understand what your actual question is, nor whether >> it is particularly Struts 2 related (rather than just Hibernate) - but >> you might want to have a look in the CRUD demo section of the Struts 2 >> showcase application. Maybe you will also find this demo useful: >> http://github.com/rgielen/struts2crudevolutiondemo >> >> - René >> >> bruno grandjean schrieb: >>> Hi >>> >>> I am trying to implement a simple CRUD with a OneToMany association under >>> Struts 2 / Hibernate 3. >>> I have two entities Parent and Child: >>> >>> @Entity >>> @Table(name="PARENT") >>> public class Parent { >>> private Long id; >>> private Set values = new HashSet(); >>> .. >>> @Entity >>> @Table(name="CHILD") >>> public class Child { >>> private Long id; >>> private String name; >>> .. >>> >>> I can easily create, delete Parent or read the Child Set (values) but it >>> is impossible to update Child Set. >>> The jsp page (see below) reinit the values Set, no record after updating! >>> Could u explain to me what's wrong? >>> >>> here are my code: >>> >>> @Entity >>> @Table(name="PARENT") >>> public class Parent { >>> private Long id; >>> private Set values = new HashSet(); >>> @Id >>> @GeneratedValue >>> @Column(name="PARENT_ID") >>> public Long getId() { >>> return id; >>> } >>> public void setId(Long id) { >>> this.id = id; >>> } >>> @ManyToMany(fetch = FetchType.EAGER) >>> @JoinTable(name = "PARENT_CHILD", joinColumns = { @JoinColumn(name = >>> "PARENT_ID") }, inverseJoinColumns = { @JoinColumn(name = "CHILD_ID") }) >>> public Set getValues() { >>> return values; >>> } >>> public void setValues(Set lst) { >>> values = lst; >>> } >>> } >>> >>> @Entity >>> @Table(name="CHILD") >>> public class Child { >>> private Long id; >>> private String name; >>> @Id >>> @GeneratedValue >>> @Column(name="CHILD_ID") >>> public Long getId() { >>> return id; >>> } >>> public void setId(Long id) { >>> this.id = id; >>> } >>> @Column(name="NAME") >>> public String getName() { >>
Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3
Dear Rene, Thks a lot for replying to me because I am feeling a little bit alone with my CRUD ;-). In fact I am trying to build a dynamic MetaCrud. My pb is simple: in the same jsp page I would like to update a Parent object and its Childs (values): From an existing Parent object with many Childs objects I can easily modify parent.name for instance but the collection of Child objects (values) is always empty in the ParentAction (saveOrUpdate() method) after submitting. However I can display each values[i].name in the jsp page with the correct value. So it is not an issue with Hibernate but with the jsp or ModelDriven interface I don't know..Do you have any idea? Basically I was not able to find a struts or spring documentation about CRUD & association between two entities on the same jsp page. best regards bruno -- From: "Rene Gielen" Sent: Wednesday, March 31, 2010 7:12 PM To: "Struts Users Mailing List" Subject: Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3 I'm not sure if I understand what your actual question is, nor whether it is particularly Struts 2 related (rather than just Hibernate) - but you might want to have a look in the CRUD demo section of the Struts 2 showcase application. Maybe you will also find this demo useful: http://github.com/rgielen/struts2crudevolutiondemo - René bruno grandjean schrieb: Hi I am trying to implement a simple CRUD with a OneToMany association under Struts 2 / Hibernate 3. I have two entities Parent and Child: @Entity @Table(name="PARENT") public class Parent { private Long id; private Set values = new HashSet(); .. @Entity @Table(name="CHILD") public class Child { private Long id; private String name; .. I can easily create, delete Parent or read the Child Set (values) but it is impossible to update Child Set. The jsp page (see below) reinit the values Set, no record after updating! Could u explain to me what's wrong? here are my code: @Entity @Table(name="PARENT") public class Parent { private Long id; private Set values = new HashSet(); @Id @GeneratedValue @Column(name="PARENT_ID") public Long getId() { return id; } public void setId(Long id) { this.id = id; } @ManyToMany(fetch = FetchType.EAGER) @JoinTable(name = "PARENT_CHILD", joinColumns = { @JoinColumn(name = "PARENT_ID") }, inverseJoinColumns = { @JoinColumn(name = "CHILD_ID") }) public Set getValues() { return values; } public void setValues(Set lst) { values = lst; } } @Entity @Table(name="CHILD") public class Child { private Long id; private String name; @Id @GeneratedValue @Column(name="CHILD_ID") public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column(name="NAME") public String getName() { return name; } public void setName(String val) { name = val; } } public interface ParentDAO { public void saveOrUpdateParent(Parent cl); public void saveParent(Parent cl); public List listParent(); public Parent listParentById(Long clId); public void deleteParent(Long clId); } public class ParentDAOImpl implements ParentDAO { @SessionTarget Session session; @TransactionTarget Transaction transaction; @Override public void saveOrUpdateParent(Parent cl) { try { session.saveOrUpdate(cl); } catch (Exception e) { transaction.rollback(); e.printStackTrace(); } } @Override public void saveParent(Parent cl) { try { session.save(cl); } catch (Exception e) { transaction.rollback(); e.printStackTrace(); } } @Override public void deleteParent(Long clId) { try { Parent cl = (Parent) session.get(Parent.class, clId); session.delete(cl); } catch (Exception e) { transaction.rollback(); e.printStackTrace(); } } @SuppressWarnings("unchecked") @Override public List listParent() { List courses = null; try { courses = session.createQuery("from Parent").list(); } catch (Exception e) { e.printStackTrace(); } return courses; } @Override public Parent listParentById(Long clId) { Parent cl = null; try { cl = (Parent) session.get(Parent.class, clId); } catch (Exception e) { e.printStackTrace(); } return cl; } } public class ParentAction extends ActionSupport implements ModelDriven { private static final long serialVersionUID = -2662966220408285700L; private Parent cl = new Parent(); private List clList = new ArrayList(); private ParentDAO clDAO = new ParentDAOImpl(); @Override public Parent getModel() { return cl; } public String saveOrUpdate() { clDAO.saveOrUpdateParent(cl); return SUCCESS; } public String save() { clDAO.saveParent(cl); return SUCCESS; } public String list() { clList = clDAO.listParent(); retur
Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3
Dear Rene, Thks a lot for replying to me because I am feeling a little bit alone with my CRUD ;-). In fact I am trying to build a dynamic MetaCrud. My pb is simple: in the same jsp page I would like to update a Parent object and its Childs (values): name="name" label="Nom" /> From an existing Parent object with many Childs objects I can easily modify parent.name for instance but the collection of Child objects (values) is always empty in the ParentAction (saveOrUpdate() method) after submitting. However I can display each values[i].name in the jsp page with the correct value. So it is not an issue with Hibernate but with the jsp or ModelDriven interface I don't know..Do you have any idea? Basically I was not able to find a struts or spring documentation about CRUD & association between two entities on the same jsp page. best regards bruno -- From: "Rene Gielen" Sent: Wednesday, March 31, 2010 7:12 PM To: "Struts Users Mailing List" Subject: Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3 I'm not sure if I understand what your actual question is, nor whether it is particularly Struts 2 related (rather than just Hibernate) - but you might want to have a look in the CRUD demo section of the Struts 2 showcase application. Maybe you will also find this demo useful: http://github.com/rgielen/struts2crudevolutiondemo - René bruno grandjean schrieb: Hi I am trying to implement a simple CRUD with a OneToMany association under Struts 2 / Hibernate 3. I have two entities Parent and Child: @Entity @Table(name="PARENT") public class Parent { private Long id; private Set values = new HashSet(); .. @Entity @Table(name="CHILD") public class Child { private Long id; private String name; .. I can easily create, delete Parent or read the Child Set (values) but it is impossible to update Child Set. The jsp page (see below) reinit the values Set, no record after updating! Could u explain to me what's wrong? here are my code: @Entity @Table(name="PARENT") public class Parent { private Long id; private Set values = new HashSet(); @Id @GeneratedValue @Column(name="PARENT_ID") public Long getId() { return id; } public void setId(Long id) { this.id = id; } @ManyToMany(fetch = FetchType.EAGER) @JoinTable(name = "PARENT_CHILD", joinColumns = { @JoinColumn(name = "PARENT_ID") }, inverseJoinColumns = { @JoinColumn(name = "CHILD_ID") }) public Set getValues() { return values; } public void setValues(Set lst) { values = lst; } } @Entity @Table(name="CHILD") public class Child { private Long id; private String name; @Id @GeneratedValue @Column(name="CHILD_ID") public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column(name="NAME") public String getName() { return name; } public void setName(String val) { name = val; } } public interface ParentDAO { public void saveOrUpdateParent(Parent cl); public void saveParent(Parent cl); public List listParent(); public Parent listParentById(Long clId); public void deleteParent(Long clId); } public class ParentDAOImpl implements ParentDAO { @SessionTarget Session session; @TransactionTarget Transaction transaction; @Override public void saveOrUpdateParent(Parent cl) { try { session.saveOrUpdate(cl); } catch (Exception e) { transaction.rollback(); e.printStackTrace(); } } @Override public void saveParent(Parent cl) { try { session.save(cl); } catch (Exception e) { transaction.rollback(); e.printStackTrace(); } } @Override public void deleteParent(Long clId) { try { Parent cl = (Parent) session.get(Parent.class, clId); session.delete(cl); } catch (Exception e) { transaction.rollback(); e.printStackTrace(); } } @SuppressWarnings("unchecked") @Override public List listParent() { List courses = null; try { courses = session.createQuery("from Parent").list(); } catch (Exception e) { e.printStackTrace(); } return courses; } @Override public Parent listParentById(Long clId) { Parent cl = null; try { cl = (Parent) session.get(Parent.class, clId); } catch (Exception e) { e.printStackTrace(); } return cl; } } public class ParentAction extends ActionSupport implements ModelDriven { private static final long serialVersionUID = -2662966220408285700L; private Parent cl = new Parent(); private List clList = new ArrayList(); private ParentDAO clDAO = new ParentDAOImpl(); @Override public Parent getModel() { return cl; } public String saveOrUpdate() { clDAO.saveOrUpdateParent(cl); return SUCCESS; } public String save()
Re: CRUD with a OneToMany association under Struts 2 / Hibernate 3
I'm not sure if I understand what your actual question is, nor whether it is particularly Struts 2 related (rather than just Hibernate) - but you might want to have a look in the CRUD demo section of the Struts 2 showcase application. Maybe you will also find this demo useful: http://github.com/rgielen/struts2crudevolutiondemo - René bruno grandjean schrieb: > Hi > > I am trying to implement a simple CRUD with a OneToMany association under > Struts 2 / Hibernate 3. > I have two entities Parent and Child: > > @Entity > @Table(name="PARENT") > public class Parent { > private Long id; > private Set values = new HashSet(); > .. > @Entity > @Table(name="CHILD") > public class Child { > private Long id; > private String name; > .. > > I can easily create, delete Parent or read the Child Set (values) but it is > impossible to update Child Set. > The jsp page (see below) reinit the values Set, no record after updating! > Could u explain to me what's wrong? > > here are my code: > > @Entity > @Table(name="PARENT") > public class Parent { > private Long id; > private Set values = new HashSet(); > @Id > @GeneratedValue > @Column(name="PARENT_ID") > public Long getId() { > return id; > } > public void setId(Long id) { > this.id = id; > } > @ManyToMany(fetch = FetchType.EAGER) > @JoinTable(name = "PARENT_CHILD", joinColumns = { @JoinColumn(name = > "PARENT_ID") }, inverseJoinColumns = { @JoinColumn(name = "CHILD_ID") }) > public Set getValues() { > return values; > } > public void setValues(Set lst) { > values = lst; > } > } > > @Entity > @Table(name="CHILD") > public class Child { > private Long id; > private String name; > @Id > @GeneratedValue > @Column(name="CHILD_ID") > public Long getId() { > return id; > } > public void setId(Long id) { > this.id = id; > } > @Column(name="NAME") > public String getName() { > return name; > } > public void setName(String val) { > name = val; > } > } > > public interface ParentDAO { > public void saveOrUpdateParent(Parent cl); > public void saveParent(Parent cl); > public List listParent(); > public Parent listParentById(Long clId); > public void deleteParent(Long clId); > } > > public class ParentDAOImpl implements ParentDAO { > @SessionTarget > Session session; > @TransactionTarget > Transaction transaction; > > @Override > public void saveOrUpdateParent(Parent cl) { > try { >session.saveOrUpdate(cl); > } catch (Exception e) { >transaction.rollback(); >e.printStackTrace(); > } > } > > @Override > public void saveParent(Parent cl) { > try { >session.save(cl); > } catch (Exception e) { >transaction.rollback(); >e.printStackTrace(); > } > } > > @Override > public void deleteParent(Long clId) { > try { >Parent cl = (Parent) session.get(Parent.class, clId); >session.delete(cl); > } catch (Exception e) { >transaction.rollback(); >e.printStackTrace(); > } > } > > @SuppressWarnings("unchecked") > @Override > public List listParent() { > List courses = null; > try { >courses = session.createQuery("from Parent").list(); >} catch (Exception e) { >e.printStackTrace(); > } > return courses; > } > > @Override > public Parent listParentById(Long clId) { > Parent cl = null; > try { >cl = (Parent) session.get(Parent.class, clId); > } catch (Exception e) { >e.printStackTrace(); > } > return cl; > } > } > > public class ParentAction extends ActionSupport implements > ModelDriven { > > private static final long serialVersionUID = -2662966220408285700L; > private Parent cl = new Parent(); > private List clList = new ArrayList(); > private ParentDAO clDAO = new ParentDAOImpl(); > > @Override > public Parent getModel() { > return cl; > } > > public String saveOrUpdate() > { > clDAO.saveOrUpdateParent(cl); > return SUCCESS; > } > > public String save() > { > clDAO.saveParent(cl); > return SUCCESS; > } > > public String list() > { > clList = clDAO.listParent(); > return SUCCESS; > } > > public String delete() > { > HttpServletRequest request = (HttpServletRequest) > ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); > clDAO.deleteParent(Long.parseLong(request.getParameter("id"))); > return SUCCESS; > } > > public String edit() > { > HttpServletRequest request = (HttpServletRequest) > ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); > cl = clDAO.listParentById(Long.parseLong(request.getParameter("id"))); > return SUCCESS; > } > > public Parent getParent() { > return cl; > } > > public void setParent(Parent cl) { > this.cl = cl; > } > > public List getParentList() { > return clList; > } > > public void setParentList(List clList) { > this.clList = clList; > } > } > > and finally the jsp page: > > <%@ page language="java" contentType="text/html; charset=ISO-8859-1" > p