Michael i can't express how grateful i'm for your kind help! You made it ^L^:clap:
Thanks to the unit tests i could finally trace the source for error. In the results of the tests i got a pretty generic error which prevented the WeekActivity from being saved. The exact reason was so basic i almost feel stupid to post it but here it goes anyway... The activity_id field in the database was called just "activity", without the finishing "_id" part... I guess i need to pay more attention next time! Because i would swear i had checked that but now the app works! (at least this functionality). Thanks a very big lot, you are truly the best :D Best regards. Michael Horwitz wrote: > > Both hbm.xml files look O.K. I think the trick to solving this is to > concentrate on the controller/jsp code as you suggest. Have you written a > manager test that saves a new WeekActivity (including a new Activity) and > checks that it all works? It would help eliminate Hibernate mappings as > the > source of the error. Note that it is important that you never assign an id > to either the Activity or the WeekActivity -> these should be generated by > the database (please make sure the appropriate columns in the database are > set to auto-increment). > > Mike. > > On 7/16/07, Sielm <[EMAIL PROTECTED]> wrote: >> >> >> Yes, the controller extends SimpleFormController. I was using the onBind >> method because i saw it on another source code file. In fact i'm not >> using >> onSubmit on this controller, so it is empty... >> >> I already tried the PropertyEditor for Week and User, and everything >> compiles fine but i get a null pointer exception because User and Week >> can't >> be resolved (i retrieved them from the database with request parameters >> because they are preloaded data, and the application won't >> insert/update/delete them). >> >> As for the rest of the controller, it is empty, i just used the onBind >> method. I did not understand very well the "changes propagating to the >> code >> run in the cointainer" part. I call clean before every try, and i use >> command line so i take this should be no problem? >> >> As can be seen, i initialize the Activity object in the WeekActivity >> object >> like this >> >> Activity activity = new Activity(); >> >> Because, logically, a new activity should be inserted in the DB each time >> for every WeekActivity object. The form controller is for the >> WeekActivity >> object, and Activity should be saved before the WeekActivity. In the jsp >> i >> just do this: >> >> <form:hidden path="activity"/> >> >> So this should refer to the activity property in the WeekActivity, but >> the >> activity has not been saved yet so hibernate complains about activity_id >> not >> having a default value. Should the path be "activity.id" or maybe an >> allowed >> field should be "activity.id" in the controller mapping? >> >> I include both hbm.xml files for Activity and WeekActivity. Something >> tells >> me the problem is somewhere around the jsp or the controller...because >> everything else looks ok! Thanks a lot for paying attention to me Mike >> ;) >> >> >> >> http://www.nabble.com/file/p11614324/Activity.hbm.xml Activity.hbm.xml >> >> http://www.nabble.com/file/p11614324/UserWeekActivity.hbm.xml >> UserWeekActivity.hbm.xml >> >> >> >> >> >> >> Michael Horwitz wrote: >> > >> > O.K. Will need to go through this slowly. You don't mention which class >> > your >> > ActionWeek controller extends, but I assume it is SimpleFormController >> (or >> > the AppFuse class derived from SimpleFormController)? In which case you >> > should not need to override the onBind() method unless you need to do >> > something very special (normally check boxes, radio button type stuff). >> > And >> > you should definitely never be calling a manager's save method in >> onBind() >> > - >> > no validation has been done yet. So step 1 is to get rid of the >> onBind() >> > method in your controller. >> > >> > To do this you will need to register two custom property editors: one >> to >> > return the Week object, and the other to return the User object. >> > Please see the nabble thread I posted a link to earlier for full >> details >> > as >> > to how this should be done. This will also allow you to bind these >> objects >> > in the jsp using <form:hidden path="user"/> and <form:hidden >> > path="week"/>. >> > >> > Next it would be usefull to have a peek at your controller's onSubmit() >> > method to see if there is anything there that stands out. Could you >> also >> > post the hbm.xml files that are produced post processing by xdoclet? >> This >> > is >> > always a good check that everything is behaving as it should. Also just >> to >> > check that you are not explicitly calling get/set methods on the model >> > objects anywhere else in your controller? >> > >> > Also worth checking (I have been caught out with this many, many times) >> > that >> > changes you are making to annotations, etc are propogating down to the >> > actual code being run in the container? I have not used XDoclet in a >> > while, >> > but seem to remember that this could be problematic particularly when >> used >> > with an IDE doing the build. >> > >> > Thanks >> > >> > Mike. >> > >> > On 7/16/07, Sielm <[EMAIL PROTECTED]> wrote: >> >> >> >> >> >> Still with the same problem :/ i still get the same hibernate error >> from >> >> before. >> >> >> >> In fact, i was already using spring form tags. I have this code in my >> >> JSP: >> >> >> >> ------------------ >> >> <form:form commandName="weekActivity" method="post" >> >> action="editWeekActivities.html" id="weekActivityForm"> >> >> <form:errors path="*" cssClass="error"/> >> >> >> >> <input type="hidden" name="user.id" id="user.id" >> >> value="<%=request.getParameter("user.userName")%>"> >> >> <input type="hidden" name="week.id" id="week.id" >> >> value="<%=request.getParameter("week.id")%>"> >> >> >> >> <form:hidden path="activity.id"/> >> >> >> >> <ul class="left"> >> >> <li> >> >> <div class="left"> >> >> <form:input path="activity.name" id="activityName" >> >> maxlength="40" >> >> cssClass="text small"/> >> >> </div> >> >> <div class="left"> >> >> <form:input path="activity.mondayHours" >> >> id="activityMondayHours" >> >> maxlength="3" cssClass="text small"/> >> >> </div> >> >> ------------------ >> >> This form is still very basic because i didn't want to get into >> >> aesthetics >> >> and visuals before getting it to work. The user.id and week.id are >> >> fetched >> >> from the request (not very clean code i guess) correctly but i don't >> know >> >> how to tell Spring that activity.id should be 1) generated and >> 2)injected >> >> into the weekActivity object. I currently had that hidden property but >> >> that >> >> did not work. By the way these are the mappings in the form >> controller: >> >> >> >> <bean name="/editWeekActivities.html" >> >> class="WeekActivityFormController" >> >> parent="baseFormController"> >> >> <property name="validator" ref="beanValidator"/> >> >> <property name="commandClass" value="WeekActivity" /> >> >> <property name="commandName" value="weekActivity" /> >> >> <property name="manager" ref="weekActivityManager" /> >> >> <property name="allowedFields"> >> >> <value> >> >> user, >> >> week, >> >> activity.name, >> >> activity.mondayHours, >> >> activity.tuesdayHours, >> >> activity.wednesdayHours, >> >> activity.thursdayHours, >> >> activity.fridayHours, >> >> activity.saturdayHours, >> >> activity.sundayHours >> >> </value> >> >> </property> >> >> </bean> >> >> >> >> Maybe i'm getting all this completely wrong, but i think this should >> be >> >> correct...any ideas? >> >> >> >> Thanks again and please don't kill me yet! ;) >> >> >> >> Best regards >> >> >> >> >> >> Sielm wrote: >> >> > >> >> > Thank you very much for your kind and very quick answer! I will try >> >> this >> >> > right now. You are right on the navegability on that association, >> and >> >> also >> >> > on the activity_id column in the WeekActivity table. Let's see if i >> get >> >> > this to work! >> >> > >> >> > Thanks again :) >> >> > >> >> > Best regards. >> >> > >> >> > >> >> > Michael Horwitz wrote: >> >> >> >> >> >> I think the problem is in the association you have attached to the >> >> >> getActivity() method in WeekActivity. I am assuming the association >> >> >> between >> >> >> WeekActivity and Activity is uni-directional and can only be >> navigated >> >> >> from >> >> >> WeekActivity to Activity? I am also assuming that the table for >> week >> >> >> activity contains a column called activity_id? In which case your >> >> >> association mapping should read: >> >> >> >> >> >> /** >> >> >> * @hibernate.many-to-one cascade="save-update" >> >> >> column="activity_id" >> >> >> unique="true" >> >> >> * @return the activity >> >> >> */ >> >> >> public Activity getActivity() { >> >> >> return activity; >> >> >> } >> >> >> >> >> >> You should not need to save the Activity separately in your >> >> controller, >> >> >> nor >> >> >> should you need to explicitly set the id. >> >> >> >> >> >> Also a note on your controller code: you seem to be doing a lot of >> >> manual >> >> >> binding in your controllers. Spring can do a lot of this work for >> you >> >> - >> >> >> just >> >> >> take a look at the form tags: >> >> >> >> >> >> http://static.springframework.org/spring/docs/2.0.x/reference/spring-form.tld.html >> >> >> and >> >> >> this discussion on the user mailing list on binding custom property >> >> >> editors: >> >> >> http://tinyurl.com/2f68de (just look down the list for discussion >> on >> >> >> using >> >> >> Spring form tags). >> >> >> >> >> >> Mike. >> >> >> >> >> >> >> >> >> On 7/16/07, Sielm <[EMAIL PROTECTED]> wrote: >> >> >>> >> >> >>> >> >> >>> By the way, i forgot to mention that the Activity row is actually >> >> saved >> >> >>> into >> >> >>> the database correctly, but i get the error when trying to persist >> >> the >> >> >>> WeekActivity entity, so the WeekActivity table is always empty... >> >> >>> >> >> >>> Best regards. >> >> >>> >> >> >>> >> >> >>> Sielm wrote: >> >> >>> > >> >> >>> > Hi again. Here are the details i've worked on so far: >> >> >>> > >> >> >>> > /** >> >> >>> > * @hibernate.class table="activity" >> >> >>> > */ >> >> >>> > public class Activity extends PersistentObject { >> >> >>> > >> >> >>> > private String name; >> >> >>> > private Float mondayHours; >> >> >>> > private Float tuesdayHours; >> >> >>> > private Float wednesdayHours; >> >> >>> > private Float thursdayHours; >> >> >>> > private Float fridayHours; >> >> >>> > private Float saturdayHours; >> >> >>> > private Float sundayHours; >> >> >>> > >> >> >>> > /** >> >> >>> > * @hibernate.id column="id" generator-class="native" >> >> >>> > */ >> >> >>> > public String getId() { >> >> >>> > return super.getId(); >> >> >>> > } >> >> >>> > >> >> >>> > /** >> >> >>> > * @hibernate.property column="name" >> >> >>> > * @return the name >> >> >>> > */ >> >> >>> > public String getName() { >> >> >>> > return name; >> >> >>> > } >> >> >>> > >> >> >>> > /** >> >> >>> > * @hibernate.property column="monday_hours" >> >> >>> > * @return mondayHours >> >> >>> > */ >> >> >>> > public Float getMondayHours() { >> >> >>> > return mondayHours; >> >> >>> > } >> >> >>> > >> >> >>> > /** >> >> >>> > * @spring.validator type="required" >> >> >>> > * @spring.validator type="maxlength" >> >> >>> > * @spring.validator-args arg1value="${var:maxlength}" >> >> >>> > * @spring.validator-var name="maxlength" value="100" >> >> >>> > * @param name the name to set >> >> >>> > */ >> >> >>> > public void setName(String name) { >> >> >>> > this.name = name; >> >> >>> > } >> >> >>> > >> >> >>> > /** >> >> >>> > * @spring.validator type="float" >> >> >>> > * @spring.validator type="floatRange" msgkey=" >> >> >>> errors.mondayhours.range" >> >> >>> > * @spring.validator-args arg1value="${var:min}" >> >> >>> > * @spring.validator-args arg2value="${var:max}" >> >> >>> > * @spring.validator-var name="min" value="0.5" >> >> >>> > * @spring.validator-var name="max" value="8.0" >> >> >>> > * @param mondayHours the mondayHours to set >> >> >>> > */ >> >> >>> > public void setMondayHours(Float mondayHours) { >> >> >>> > this.mondayHours = mondayHours; >> >> >>> > } >> >> >>> > >> >> >>> > >> >> >>> >> >> >> ------------------------------------------------------------------------------------------------ >> >> >>> > >> >> >>> > I just included 2 of the setter/getter methods because they are >> all >> >> >>> > similar. On the other side, i have the other class, the big one, >> >> >>> > WeekActivity: >> >> >>> > >> >> >>> > /** >> >> >>> > * @hibernate.class table="week_activity" >> >> >>> > */ >> >> >>> > public class WeekActivity extends PersistentObject{ >> >> >>> > >> >> >>> > private User user; >> >> >>> > private Week week; >> >> >>> > private Activity activity = new Activity(); >> >> >>> > private Boolean isAuthorized = Boolean.FALSE; >> >> >>> > >> >> >>> > /** >> >> >>> > * @hibernate.id column="id" generator-class="native" >> >> >>> > */ >> >> >>> > public String getId() { >> >> >>> > return super.getId(); >> >> >>> > } >> >> >>> > >> >> >>> > /** >> >> >>> > * @hibernate.one-to-one cascade="save-update" >> >> >>> > * @return the activity >> >> >>> > */ >> >> >>> > public Activity getActivity() { >> >> >>> > return activity; >> >> >>> > } >> >> >>> > >> >> >>> > /** >> >> >>> > * @hibernate.property column="is_authorized" >> >> >>> > * @return the isAuthorized >> >> >>> > */ >> >> >>> > public Boolean getIsAuthorized() { >> >> >>> > return isAuthorized; >> >> >>> > } >> >> >>> > >> >> >>> > /** >> >> >>> > * @hibernate.many-to-one column="user_id" >> >> cascade="save-update" >> >> >>> > * @return the user >> >> >>> > */ >> >> >>> > public User getUser() { >> >> >>> > return user; >> >> >>> > } >> >> >>> > >> >> >>> > /** >> >> >>> > * @hibernate.many-to-one column="week_id" >> >> cascade="save-update" >> >> >>> > * @return the week >> >> >>> > */ >> >> >>> > public Week getWeek() { >> >> >>> > return week; >> >> >>> > } >> >> >>> > >> >> >>> > /** >> >> >>> > * @spring.validator type="required" >> >> >>> > * @param activity the activity to set >> >> >>> > */ >> >> >>> > public void setActivity(Activity activity) { >> >> >>> > this.activity = activity; >> >> >>> > } >> >> >>> > >> >> >>> > /** >> >> >>> > * @spring.validator type="required" >> >> >>> > * @param isAuthorized the isAuthorized to set >> >> >>> > */ >> >> >>> > public void setIsAuthorized(Boolean isAuthorized) { >> >> >>> > this.isAuthorized = isAuthorized; >> >> >>> > } >> >> >>> > >> >> >>> > /** >> >> >>> > * @spring.validator type="required" >> >> >>> > * @param user the user to set >> >> >>> > */ >> >> >>> > public void setUser(User user) { >> >> >>> > this.user = user; >> >> >>> > } >> >> >>> > >> >> >>> > /** >> >> >>> > * @spring.validator type="required" >> >> >>> > * @param week the week to set >> >> >>> > */ >> >> >>> > public void setWeek(Week week) { >> >> >>> > this.week = week; >> >> >>> > } >> >> >>> > } >> >> >>> > >> >> >>> > >> >> >>> >> >> >> ------------------------------------------------------------------------------------------------ >> >> >>> > >> >> >>> > Like i said previously, when i try to save the whole >> WeekActivity >> >> from >> >> >>> the >> >> >>> > jsp, i fill the user.id and week.id fields on the onSubmit >> method >> >> in >> >> >>> the >> >> >>> > WeekActivityFormController. But, i am not able to also persist >> the >> >> >>> > activity (so it gets a newly generated ID each time) before >> that. >> >> And >> >> >>> i >> >> >>> > need to do this because i need a new activity.id each time i >> fill >> >> the >> >> >>> > WeekActivity form (the activity.id will be unique in the >> >> WeekActivity >> >> >>> > table). This is what i have so far in the controller: >> >> >>> > >> >> >>> > protected void onBind(HttpServletRequest request, Object >> command, >> >> >>> > BindException errors) throws Exception { >> >> >>> > >> >> >>> > super.onBind(request, command); >> >> >>> > >> >> >>> > WeekActivity weekActivity = (weekActivity) >> command; >> >> >>> > >> >> >>> > // Here we get parameters to fill in User and >> Week >> >> >>> > objects... >> >> >>> > String userId = request.getParameter("user.id"); >> >> >>> > String weekId = request.getParameter("week.id"); >> >> >>> > >> >> >>> > // We obtain the User and Week from the request >> >> >>> parameters >> >> >>> > // because User and Week are already in the >> >> >>> database... >> >> >>> > if (userId != null) { >> >> >>> > >> >> >>> > if (weekActivity.getUser() == null) { >> >> >>> > >> >> >>> > User user = (User) >> >> >>> manager.get(User.class, >> >> >>> userId); >> >> >>> > weekActivity.setUser(user); >> >> >>> > } >> >> >>> > } >> >> >>> > >> >> >>> > if (weekId != null) { >> >> >>> > >> >> >>> > if (weekActivity.getWeek() == null) { >> >> >>> > >> >> >>> > Week week = (Week) >> >> >>> manager.get(Week.class, >> >> >>> weekId); >> >> >>> > weekActivity.setWeek(week); >> >> >>> > } >> >> >>> > } >> >> >>> > >> >> >>> > // Now i try to set the corresponding Activity >> object >> >> >>> too... >> >> >>> > Activity theActivity = weekActivity.getActivity(); >> >> >>> > >> >> >>> > // Setting Activity properties from parameters >> too >> >> >>> (except >> >> >>> > the ID!) >> >> >>> > String activityName = >> >> >>> request.getParameter("activity.name >> >> >>> "); >> >> >>> > if (activityName != null && (!StringUtils.isEmpty( >> >> >>> activityName.trim()))) >> >> >>> > { >> >> >>> > theActivity.setName(activityName); >> >> >>> > } >> >> >>> > >> >> >>> > String activityMon = request.getParameter(" >> >> >>> activity.mondayHours"); >> >> >>> > if (activityMon != null && (!StringUtils.isEmpty( >> >> >>> activityMon.trim()))) { >> >> >>> > theActivity.setMondayHours(new Float( >> >> >>> Float.parseFloat(activityMon))); >> >> >>> > } >> >> >>> > >> >> >>> > String activityTue = request.getParameter(" >> >> >>> activity.tuesdayHours"); >> >> >>> > if (activityTue != null && (!StringUtils.isEmpty( >> >> >>> activityTue.trim()))) { >> >> >>> > theActivity.setTuesdayHours(new Float( >> >> >>> Float.parseFloat(activityTue))); >> >> >>> > } >> >> >>> > >> >> >>> > String activityWed = request.getParameter(" >> >> >>> activity.wednesdayHours"); >> >> >>> > if (activityWed != null && (!StringUtils.isEmpty( >> >> >>> activityWed.trim()))) { >> >> >>> > theActivity.setWednesdayHours(new >> >> >>> > Float(Float.parseFloat(activityWed))); >> >> >>> > } >> >> >>> > >> >> >>> > String activityThu = request.getParameter(" >> >> >>> activity.thursdayHours"); >> >> >>> > if (activityThu != null && (!StringUtils.isEmpty( >> >> >>> activityThu.trim()))) { >> >> >>> > theActivity.setThursdayHours(new Float( >> >> >>> Float.parseFloat(activityThu))); >> >> >>> > } >> >> >>> > >> >> >>> > String activityFri = request.getParameter(" >> >> >>> activity.fridayHours"); >> >> >>> > if (activityFri != null && (!StringUtils.isEmpty( >> >> >>> activityFri.trim()))) { >> >> >>> > theActivity.setFridayHours(new Float( >> >> >>> Float.parseFloat(activityFri))); >> >> >>> > } >> >> >>> > >> >> >>> > String activitySat = request.getParameter(" >> >> >>> activity.saturdayHours"); >> >> >>> > if (activitySat != null && (!StringUtils.isEmpty( >> >> >>> activitySat.trim()))) { >> >> >>> > theActivity.setSaturdayHours(new Float( >> >> >>> Float.parseFloat(activitySat))); >> >> >>> > } >> >> >>> > >> >> >>> > String activitySun = request.getParameter(" >> >> >>> activity.sundayHours"); >> >> >>> > if (activitySun != null && (!StringUtils.isEmpty( >> >> >>> activitySun.trim()))) { >> >> >>> > theActivity.setSundayHours(new Float( >> >> >>> Float.parseFloat(activitySun))); >> >> >>> > } >> >> >>> > >> >> >>> > // Saving the activity now makes MySQL generate a >> new >> >> >>> id... >> >> >>> > // Not sure if i should do the following lines >> but >> >> >>> these >> >> >>> > are the last i tried... >> >> >>> > >> >> >>> > manager.save(theActivity); >> >> >>> > >> >> >>> > String theActivityId = theActivity.getId(); >> >> >>> > theActivity.setId(theActivityId); >> >> >>> > >> >> >>> > weekActivity.setActivity(theActivity); >> >> >>> > } >> >> >>> > >> >> >>> > >> >> >>> >> >> >> ------------------------------------------------------------------------------------------------ >> >> >>> > >> >> >>> > As you can see above, i pass some activity properties in the >> >> request >> >> >>> (all >> >> >>> > of them actually, except the ID!). So i fill the Activity object >> >> too, >> >> >>> > persist it so i get the ID (should this be necessary?) and the >> get >> >> the >> >> >>> ID >> >> >>> > again and set this Activity into the big WeekActivity object. >> The >> >> bad >> >> >>> part >> >> >>> > is when i run this... i get the following: >> >> >>> > >> >> >>> > Hibernate operation: could not insert: [WeekActivity]; >> >> uncategorized >> >> >>> > SQLException for SQL [insert into week_activity (is_authorized, >> >> >>> user_id, >> >> >>> > week_id) values (?, ?, ?)]; SQL state [HY000]; error code >> [1364]; >> >> >>> Field >> >> >>> > 'activity' doesn't have a default value; nested exception is >> >> >>> > java.sql.SQLException: Field 'activity' doesn't have a default >> >> value >> >> >>> > >> >> >>> > Obviously it can't have a default value, because the ID should >> be >> >> >>> > generated each time and before saving the "big" WeekActivity. >> >> >>> > >> >> >>> > I have already wasted a week trying to solve this...I'm pretty >> new >> >> to >> >> >>> J2EE >> >> >>> > and much more to Hibernate and Spring so please bear with me and >> my >> >> >>> ugly >> >> >>> > code ;) but i'm desperate! Ther must be something i am doing >> >> >>> > wrong...maybe not just one thing but more... >> >> >>> > >> >> >>> > Thanks a lot for reading and lending a hand, you are the best! >> :) >> >> >>> > >> >> >>> > Best regards. >> >> >>> > >> >> >>> > >> >> >>> > Michael Horwitz wrote: >> >> >>> >> >> >> >>> >> O.K. It should all work as long as you have the relationship >> >> between >> >> >>> >> WeekActivity and Activity marked as cascade=save. If you are >> >> having >> >> >>> >> trouble >> >> >>> >> with the mapping/annotations just post up a sample of what you >> >> have >> >> >>> so >> >> >>> >> far, >> >> >>> >> and we can help. >> >> >>> >> >> >> >>> >> Mike. >> >> >>> >> >> >> >>> >> On 7/14/07, Sielm <[EMAIL PROTECTED]> wrote: >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> Sorry, i forgot about these details. I'm using AppFuse >> 1.9.4with >> >> >>> Spring >> >> >>> >>> for >> >> >>> >>> the front end too, and Hibernate for persistence. The actual >> >> >>> database >> >> >>> is >> >> >>> >>> MySQL 5.x (not sure about the exact version). >> >> >>> >>> >> >> >>> >>> Thanks a lot. If i forget anything else please tell me and i >> will >> >> >>> reply >> >> >>> >>> as >> >> >>> >>> soon as possible. >> >> >>> >>> >> >> >>> >>> Best regards. >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> Michael Horwitz wrote: >> >> >>> >>> > >> >> >>> >>> > Which version of AppFuse are you using and with which web >> front >> >> >>> end? >> >> >>> >>> > Details >> >> >>> >>> > as to which persistence layer you have chosen would also be >> >> >>> useful: >> >> >>> >>> > Hibernate, JPA or iBatis? >> >> >>> >>> > >> >> >>> >>> > P.S. You English is excellent, by the way! >> >> >>> >>> > >> >> >>> >>> > Thanks >> >> >>> >>> > >> >> >>> >>> > Mike. >> >> >>> >>> > >> >> >>> >>> > On 7/13/07, Sielm <[EMAIL PROTECTED]> wrote: >> >> >>> >>> >> >> >> >>> >>> >> >> >> >>> >>> >> Hi all. I'm new to J2EE and AppFuse and have been tinkering >> >> with >> >> >>> it >> >> >>> >>> for >> >> >>> >>> a >> >> >>> >>> >> while now. The main thing is this: i have a "big" object >> >> called >> >> >>> >>> >> WeekActivity >> >> >>> >>> >> which represents an activity made by an user in a week, and >> i >> >> >>> need >> >> >>> to >> >> >>> >>> be >> >> >>> >>> >> able to make a form to create new rows in the database for >> >> this >> >> >>> >>> object. >> >> >>> >>> >> This >> >> >>> >>> >> object has 3 properties (attributes), which are User, Week >> and >> >> >>> >>> Activity. >> >> >>> >>> >> Each of these three are beans which go into the database. >> This >> >> >>> way >> >> >>> a >> >> >>> >>> >> WeekActivity row in the database would have the user id, >> the >> >> week >> >> >>> id, >> >> >>> >>> the >> >> >>> >>> >> activity id and the hibernate generated primary key ID. >> >> Roughly >> >> >>> this >> >> >>> >>> is >> >> >>> >>> >> the >> >> >>> >>> >> way this is mapped: >> >> >>> >>> >> >> >> >>> >>> >> · User: table user (ID, ... , other columns) >> >> >>> >>> >> · Week: table week (ID, ..., other columns) >> >> >>> >>> >> · Activity: table activity (ID, ..., other columns) >> >> >>> >>> >> · WeekActivity: table user_week_activity (user.id, >> week.id, >> >> >>> >>> activity.id >> >> >>> >>> , >> >> >>> >>> >> ID) >> >> >>> >>> >> · method getUser ---> >> hibernate.many-to-onecolumn=" >> >> user.id" >> >> >>> >>> (because >> >> >>> >>> >> a >> >> >>> >>> >> user could have several activities in a week). I'm assuming >> >> this >> >> >>> will >> >> >>> >>> map >> >> >>> >>> >> the ID column of the User table to this table as a foreign >> key >> >> >>> (maybe >> >> >>> >>> i >> >> >>> >>> >> got >> >> >>> >>> >> this wrong in hibernate?) >> >> >>> >>> >> · method getWeek ---> same as above, a many to >> one for >> >> >>> week.id >> >> >>> >>> >> because >> >> >>> >>> >> a >> >> >>> >>> >> week can appear in several activities >> >> >>> >>> >> · method getActivity ---> hibernate.one-to-one, >> because >> >> an >> >> >>> >>> activity >> >> >>> >>> >> will >> >> >>> >>> >> have a unique ID always, for each time the form is used no >> >> matter >> >> >>> the >> >> >>> >>> >> user >> >> >>> >>> >> or the week. >> >> >>> >>> >> >> >> >>> >>> >> >> >> >>> >>> >> But User and Week are already in the database, so that in >> the >> >> >>> >>> >> weekActivityForm.jsp i just pass the user.id and the >> week.id >> >> as >> >> >>> >>> request >> >> >>> >>> >> parameters, but i need to create a new activity.id (and >> insert >> >> >>> the >> >> >>> >>> new >> >> >>> >>> >> activity object into the database) each time the >> >> weekActivityForm >> >> >>> is >> >> >>> >>> >> filled >> >> >>> >>> >> and submitted, and i don't see the way to do that. At this >> >> moment >> >> >>> >>> when >> >> >>> >>> i >> >> >>> >>> >> submit the form hibernate complains about activity.id not >> >> having >> >> >>> a >> >> >>> >>> >> default >> >> >>> >>> >> value, because i try to save the "big object" without >> setting >> >> the >> >> >>> >>> >> activity.id. >> >> >>> >>> >> >> >> >>> >>> >> In the WeekActivityFormController i have the method >> onSubmit >> >> >>> which >> >> >>> >>> reads >> >> >>> >>> >> the >> >> >>> >>> >> week.id and user.id from the request, uses the manager to >> >> fetch >> >> >>> the >> >> >>> >>> Week >> >> >>> >>> >> and >> >> >>> >>> >> User objects from the database and sets them into the >> >> >>> WeekActivity >> >> >>> >>> >> object. >> >> >>> >>> >> But what can i do to also set the Activity object? The >> thing >> >> is >> >> >>> that >> >> >>> >>> i >> >> >>> >>> >> need >> >> >>> >>> >> to insert a new Activity object into the database and then >> use >> >> >>> the >> >> >>> >>> >> WeekActivity.setActivity(activity) method BUT that new >> >> activity >> >> >>> >>> object >> >> >>> >>> >> has >> >> >>> >>> >> a >> >> >>> >>> >> new generated ID each time and i don't know how to fetch it >> >> from >> >> >>> the >> >> >>> >>> >> onSubmit method...if i even can do that. >> >> >>> >>> >> >> >> >>> >>> >> I'm afraid i was a bit confusing explaining my >> problem...the >> >> >>> short >> >> >>> >>> >> version >> >> >>> >>> >> would be: i have a commandobject in a form, and one of its >> >> >>> properties >> >> >>> >>> is >> >> >>> >>> >> another object which needs to be created each time i create >> a >> >> new >> >> >>> >>> >> instance >> >> >>> >>> >> of the commandobject (because this property should be >> always >> >> >>> unique) >> >> >>> >>> and >> >> >>> >>> >> when i try to persist the original commandobject i have no >> way >> >> of >> >> >>> >>> setting >> >> >>> >>> >> the property because i can't access the property id (which >> >> would >> >> >>> be >> >> >>> >>> >> generated when persisted too!) >> >> >>> >>> >> >> >> >>> >>> >> If someone understands my problem, i would be really >> grateful >> >> to >> >> >>> hear >> >> >>> >>> >> about >> >> >>> >>> >> it. And if someone doesn't but wants to help and need a >> more >> >> >>> indepth >> >> >>> >>> >> explain >> >> >>> >>> >> i would try my best. Thanks for your time and patience, and >> >> >>> anyway >> >> >>> a >> >> >>> >>> big >> >> >>> >>> >> salute for everyone in the mailing list. Have a good day :) >> >> >>> >>> >> >> >> >>> >>> >> PS: sorry my English is a bit lacking ;) >> >> >>> >>> >> -- >> >> >>> >>> >> View this message in context: >> >> >>> >>> >> >> >> >>> >>> >> >> >>> >> >> >> http://www.nabble.com/How-to-insert-a-new-object-from-another-object-%28command%29-form-tf4076716s2369.html#a11586895 >> >> >>> >>> >> Sent from the AppFuse - User mailing list archive at >> >> Nabble.com >> >> . >> >> >>> >>> >> >> >> >>> >>> >> >> >> >>> >> --------------------------------------------------------------------- >> >> >>> >>> >> To unsubscribe, e-mail: >> [EMAIL PROTECTED] >> >> >>> >>> >> For additional commands, e-mail: >> >> [EMAIL PROTECTED] >> >> >>> >>> >> >> >> >>> >>> >> >> >> >>> >>> > >> >> >>> >>> > >> >> >>> >>> >> >> >>> >>> -- >> >> >>> >>> View this message in context: >> >> >>> >>> >> >> >>> >> >> >> http://www.nabble.com/How-to-insert-a-new-object-from-another-object-%28command%29-form-tf4076716s2369.html#a11593027 >> >> >>> >>> Sent from the AppFuse - User mailing list archive at >> Nabble.com >> . >> >> >>> >>> >> >> >>> >>> >> >> >>> >> --------------------------------------------------------------------- >> >> >>> >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >> >> >>> >>> For additional commands, e-mail: >> [EMAIL PROTECTED] >> >> >>> >>> >> >> >>> >>> >> >> >>> >> >> >> >>> >> >> >> >>> > >> >> >>> > >> >> >>> >> >> >>> -- >> >> >>> View this message in context: >> >> >>> >> >> >> http://www.nabble.com/How-to-insert-a-new-object-from-another-object-%28command%29-form-tf4076716s2369.html#a11610981 >> >> >>> Sent from the AppFuse - User mailing list archive at Nabble.com. >> >> >>> >> >> >>> >> --------------------------------------------------------------------- >> >> >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >> >> >>> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >>> >> >> >>> >> >> >> >> >> >> >> >> > >> >> > >> >> >> >> -- >> >> View this message in context: >> >> >> http://www.nabble.com/How-to-insert-a-new-object-from-another-object-%28command%29-form-tf4076716s2369.html#a11612366 >> >> Sent from the AppFuse - User mailing list archive at Nabble.com. >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> >> >> > >> > >> >> -- >> View this message in context: >> http://www.nabble.com/How-to-insert-a-new-object-from-another-object-%28command%29-form-tf4076716s2369.html#a11614324 >> Sent from the AppFuse - User mailing list archive at Nabble.com. >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > -- View this message in context: http://www.nabble.com/How-to-insert-a-new-object-from-another-object-%28command%29-form-tf4076716s2369.html#a11646492 Sent from the AppFuse - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
