Correct. The release version 0.9.5.3 doesn't report that warning.

Anyway, what is the standard way to use collection, setter, adder or whatever? Any 
good example?

Sean
----- Original Message ----- 
From: "Werner Guttmann" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, October 19, 2004 3:42 PM
Subject: Re: [castor-user] [JDO] Confusing warning of collection type


> 
> 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
>
----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-user

Reply via email to