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