k> Alex, I've found the problem
k> if calendar id is 0 it doesn't work.

If it's the only problem, then checkout a fresh version from CVS.
I fixed it yesterday in 3.0, 3.2 and HEAD.

How do you obtain a Calendar before doing
wHome.create( pView, lCalendar )?

There is no guarantee that calendar will have the correct pk value with
such a table setup. This is why I warned you that, generally, it won't
work.
I suggest you to implement your own sequence generator pattern (or ask
me to share mine :)) or use pk-sql entity-command.

alex

Thursday, November 14, 2002, 3:17:44 PM, you wrote:

k> Alex, I've found the problem

k> if calendar id is 0 it doesn't work.

k> But I can't understand why? I've never read about it.

k> Alex Loubyansky wrote:

>>AFAIK, generally, this won't work.
>>
>>If you would like to make use of db sequences consider pk-sql entity
>>command. But it's available since 3.2.
>>
>>Anyway, try to fetch calendar's pk before assigning a relationship and
>>see what value it has. Post the results here, please.
>>
>>alex
>>
>>Thursday, November 14, 2002, 1:36:16 PM, you wrote:
>>
>>k> Thx for your attention Alex,
>>
>>k> this is a piece o sql (postgresql) I use to create tables.
>>
>>k> --calendar section--
>>k> CREATE SEQUENCE calendar_seq;
>>k> CREATE TABLE calendar (
>>k>     id INTEGER DEFAULT nextval('calendar_seq'),
>>k>     validity_start date NOT NULL,
>>k>     validity_end date CHECK(validity_end >= validity_start),
>>k>     description varchar(255) NOT NULL,
>>k>     rounds INTEGER,
>>k>     PRIMARY KEY (id)
>>k>     );
>>k> CREATE UNIQUE INDEX cal_descr_ix ON calendar(description);
>>
>>k> CREATE SEQUENCE workweek_seq;
>>k> CREATE TABLE workweek (
>>k>         id INTEGER DEFAULT nextval('workweek_seq') PRIMARY KEY,
>>k>     week_day INTEGER DEFAULT 1,
>>k>     round INTEGER,
>>k>     start_t time DEFAULT('00:00') NOT NULL,
>>k>     end_t time DEFAULT('23:59') CHECK (end_t > start_t),
>>k>           calendar_id INTEGER REFERENCES calendar(id)       
>>k>     );
>>
>>
>>k> while in bean generated calendarPk is
>>
>>k> public CalendarPK( int id )
>>k> {
>>k>    this.id = id;
>>k> }
>>
>>k> generated from
>>
>>k> /**
>>k>     * Retrieve the Calendars's id.
>>k>     *
>>k>     * @return Returns the id of this Calendar.
>>k>     * @ejb.persistent-field
>>k>     * @ejb.pk-field
>>k>     * @jboss.column-name
>>k>     *    name="id"
>>k>     */
>>k>    public abstract int getId();     
>>  
>>k>    /**
>>k>     * Sets the Calendar's id.
>>k>     *
>>k>     * @param pId The id of this Calendar.
>>k>     */
>>k>    public abstract void setId(int pId);  
>>
>>k> I've consulted some manuals but I can's see the problem.
>>
>>
>>k> Alex Loubyansky wrote:
>>
>>>>Hello kiuma,
>>>>
>>>>what is the type of Calendar's primary key? What pk values you tried?
>>>>
>>>>alex
>>>>
>>>>Thursday, November 14, 2002, 11:38:27 AM, you wrote:
>>>>
>>>>k> I've tryed also setting the post create method, but whit no result.
>>>>
>>>>k> public WorkweekPK ejbCreate( WorkweekData pWorkweek, CalendarLocal 
>>>>k> lCalendar )
>>>>k>       throws
>>>>k>          InvalidValueException,
>>>>k>          EJBException,
>>>>k>          CreateException
>>>>k>    {
>>>>k>       // Clone the given Value Object to keep changed private
>>>>k>       WorkweekData lData = (WorkweekData) pWorkweek.clone();
>>>>    
>>>>k>       // Save the new Workweek
>>>>k>       try {
>>>>k>         lData.setId( generateUniqueId() );
>>>>k>         setId( lData.getId() );
>>>>k>       } catch (ServiceUnavailableException e) {      
>>>>k>           System.out.println("Workweek Creation Error: \n" + 
>>>>k> e.getMessage());
>>>>k>             throw new EJBException(e.getMessage());
>>>>k>       }
>>>>k>       setValueObject( lData );     
>>>>k>       // This is only possible in CMPs. Otherwise return a valid PK.
>>>>k>       return null;
>>>>k>    }
>>>>
>>>>k> /**
>>>>k>     */
>>>>k> public void ejbPostCreate( WorkweekData pWorkweek, CalendarLocal lCalendar )
>>>>k> {
>>>>k>     setCalendar( lCalendar );
>>>>k> }
>>>>
>>>>
>>>>k> In my database calendar_id is always clean.
>>>>
>>>>k> Please help me!!!!
>>>>
>>>>
>>>>
>>>>k> kiuma wrote:
>>>>
>>>>>>Hi I'm using jboss3.2b + xdoclet cvs
>>>>>>
>>>>>>I've a calendar with many workweek days
>>>>>>
>>>>>>so I configured xdoclet directives for
>>>>>>
>>>>>>WorkweekBean
>>>>>>/**
>>>>>>  * @ejb.interface-method
>>>>>>  *    view-type="local"
>>>>>>  * @ejb.relation
>>>>>>  *    name="calendar-workweeks"
>>>>>>  *    role-name="workweek-has-calendar"
>>>>>>  *    cascade-delete="yes"
>>>>>>  *    target-ejb="Calendar"
>>>>>>  * @jboss.relation
>>>>>>  *    fk-constraint="true"
>>>>>>  *    fk-column="calendar_id"
>>>>>>  *    related-pk-field="id"
>>>>>>  */
>>>>>>public abstract CalendarLocal getCalendar();
>>>>>>
>>>>>>  /**
>>>>>>  * @ejb.interface-method
>>>>>>  *    view-type="local"
>>>>>>  */
>>>>>>  public abstract void setCalendar(CalendarLocal pCalendarData);
>>>>>>
>>>>>>
>>>>>>
>>>>>>while for
>>>>>>CalendarBean
>>>>>>
>>>>>>/**
>>>>>>  * @ejb.relation
>>>>>>  *    name="calendar-workweeks"
>>>>>>  *    role-name="calendar-has-workweeks"
>>>>>>  * @ejb.interface-method
>>>>>>  *    view-type="local"
>>>>>>  */
>>>>>>  public abstract Collection getWorkweeks();      /**
>>>>>>  * @ejb.interface-method
>>>>>>  *    view-type="local"
>>>>>>  */
>>>>>>  public abstract void setWorkweeks(Collection pHolydays);
>>>>>>
>>>>>>
>>>>>>when in my session I execute the following commands
>>>>>>WorkweekLocal wEntity = wHome.create( pView );            
>>>>>>wEntity.setCalendar( lCalendar );
>>>>>>
>>>>>>Workweek is created, but no calendar_id is set.
>>>>>>Could you help me please ?
>>>>>>
>>>>>>
>>>>>>
>>>>>>the piece of the generated jboss_cmp is:
>>>>>><ejb-relation>
>>>>>>    <ejb-relation-name>calendar-workweeks</ejb-relation-name>
>>>>>>
>>>>>>    <foreign-key-mapping/>
>>>>>>
>>>>>>    <ejb-relationship-role>
>>>>>>        
>>>>>><ejb-relationship-role-name>workweek-has-calendar</ejb-relationship-role-name> 
>>>>>>
>>>>>>        <fk-constraint>true</fk-constraint>
>>>>>>        <key-fields/>
>>>>>>    </ejb-relationship-role>
>>>>>>    <ejb-relationship-role>
>>>>>>        
>>>>>><ejb-relationship-role-name>calendar-has-workweeks</ejb-relationship-role-name> 
>>>>>>
>>>>>>        <key-fields>
>>>>>>           <key-field>
>>>>>>             <field-name>id</field-name>
>>>>>>             <column-name>calendar_id</column-name>
>>>>>>           </key-field>
>>>>>>        </key-fields>
>>>>>>    </ejb-relationship-role>
>>>>>>

-- 
Best regards,
 Alex Loubyansky




-------------------------------------------------------
This sf.net email is sponsored by: To learn the basics of securing 
your web site with SSL, click here to get a FREE TRIAL of a Thawte 
Server Certificate: http://www.gothawte.com/rd524.html
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to