Sean,

we are currently discussing whether we should take back the warning about the 
'addable' property. But can you just confirm to me that you are building 
the code yourself from the sources you checked out from the CVS repository.

Werner

On Tue, 19 Oct 2004 09:17:26 +0800, Sean Liang wrote:

>You can find everything in the constructor of FieldMolder.
>
>The strange thing is, if there is a setter method, Castor will not check for
>adder method, and the _addable property will never be set to true. It's true
>that I can ignore the warnings, but it goes to log file with thousands of line...
>
>Moreover, in my previous code (without setter method), the exception
>only appears when rollback.
>
>Sean
>----- Original Message ----- 
>From: "Nick Stuart" <[EMAIL PROTECTED]>
>To: <[EMAIL PROTECTED]>
>Cc: "Castor-Dev" <[EMAIL PROTECTED]>
>Sent: Monday, October 18, 2004 9:04 PM
>Subject: Re: [castor-user] [JDO] Confusing warning of collection type
>
>
>> 
>> The set/get methods are required for collections, so you are doing
>> that part right. As far as that addable warning goes, I would say
>> ignore it. I think that its spitting out even when it shouldn't and
>> I've been meaning to file a bug report about it. If its working as
>> expected to worry, if not give a holler.
>> 
>> <!--- end meaningful message here -->  :)
>> 
>> The addable attribute is (or at least should be) taken care of if you
>> have two methods of type:
>> removeHighScore(HighScroe score) 
>> and
>> addHighScore(HighScore score)
>> However, I have those methods in my classes but I still get the
>> warning. Go figure :-/  anyone else here perhaps know why or want to
>> set me straight on what I'm doing wrong with this. I know we have
>> discussed it before, but hey, its worth rehashing me thinks.
>> 
>> -Nick
>> 
>> 
>> On Mon, 18 Oct 2004 12:16:05 +0800, Sean Liang
>> <[EMAIL PROTECTED]> wrote:
>>>  
>>> Anyone who has the experience in using collection, please kindly take a look
>>> at my code and show me a way. 
>>>   
>>> ------------- part of mapping file ----------- 
>>> <class identity="id" key-generator="HIGH-LOW" name="model.Tournament"> 
>>>     <map-to table="tournament" /> 
>>>         <field name="id" type="integer"> 
>>>             <sql name="id" type="integer" /> 
>>>         </field>
>>>         <field name="highScore" type="model.HighScore"
>>> collection="collection">
>>>             <sql many-key="tournament" />
>>>         </field>
>>> </class> 
>>> <class identity="id" key-generator="HIGH-LOW" name="model.HighScore">
>>>     <map-to table="highscore" /> 
>>>         <field name="id" type="integer">
>>>             <sql name="id" type="integer" />
>>>         </field> 
>>>         <field name="score" type="double">
>>>             <sql name="score" type="double" />
>>>         </field>
>>>         <field name="tournament" type="model.Tournament">
>>>             <sql name="tournament" />
>>>         </field>
>>> </class>
>>>  
>>>   
>>> ------------- part of Tournament.java ----------- 
>>>     private Collection highScoreList = new ArrayList(); 
>>>     public void addHighScore(HighScore highScore) {
>>>         highScoreList.add(highScore); 
>>>         highScore.setTournament(this);
>>>     }
>>>     public Collection getHighScore() {
>>>         return highScoreList;
>>>     }
>>>  
>>> It then gives me an exception: 
>>> org.exolab.castor.jdo.DataObjectAccessException: no method to set value for
>>> field: model.HighScore in class: ClassMolder model.Tournament
>>>  at org.exolab.castor.persist.FieldMolder.setValue(FieldMolder.java:347)
>>>  at
>>> org.exolab.castor.persist.ClassMolder.revertObject(ClassMolder.java:2562)
>>>  at org.exolab.castor.persist.LockEngine.revertObject(LockEngine.java:848)
>>>  at
>>> org.exolab.castor.persist.TransactionContext.rollback(TransactionContext.java:1760)
>>>  at
>>> org.exolab.castor.jdo.engine.DatabaseImpl.rollback(DatabaseImpl.java:569)
>>>  ...... 
>>>   
>>> It seems that the setter is required for the collection type? But I didn't
>>> find it in the Product.java of JDO example. 
>>>   
>>> After adding the setter method: 
>>>  
>>> ------------- part of Tournament.java -----------    public void
>>> setHighScore(Collection list) {
>>>         highScoreList = list;
>>>     }
>>>  
>>> It tells me a warning this time: 
>>> org.exolab.castor.persist.CollectionProxy$ColProxy add
>>> Warning: FieldMolder FieldMolder of
>>> model.Tournament.sethighScore(model.HighScore highScore) is not addable;
>>> collection needs to set for object type model.HighScore.
>>>  
>>> I was confused, could anybody provide me a good practice of collection
>>> mapping in JDO? 
>>>   
>>>   
>>> Thanks, 
>>> Sean 
>>>   
>>> -----------------------------------------------------------
>>> If you wish to unsubscribe from this mailing, send mail to
>>> [EMAIL PROTECTED] with a subject of:
>>>         unsubscribe castor-user
>>> 
>>> 
>>>
>> 
>> 
>> 
>> ----------------------------------------------------------- 
>> If you wish to unsubscribe from this mailing, send mail to
>> [EMAIL PROTECTED] with a subject of:
>>        unsubscribe castor-user
>>



----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-user

Reply via email to