db-torque-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thomas Fischer <tfisc...@apache.org>
Subject Re: setDistinct() problem
Date Fri, 15 Jul 2005 20:34:16 GMT
Hi,

BasePeer.doSelect gives you a set of village Record objects, whereas 
AreaPeer.doselect gives you a list of area objects. If you want to use 
BasePeer.doSelect(), you have to process the village records. Look up the 
homepage of village in the wiki, get the source code, and see how to 
process a Record object. Its fairly easy, it is a kind of array.

I would guess that you use the list which you generate by 
BasePeer.doSelect() somewhere else in the code and there 
Struts or whatever your controller is discovers that Record does not have 
area getters and setters. It is certainly not the post.size() call which 
produces the error.

     Thomas

On Fri, 15 Jul 2005, Daniel Curto Millet wrote:

>
>
> Thanks for the reply Thomas!
>
> Although the table has a primary key, it's not the postcode.
>
> I tried the following piece of code following Thomas' route n°2:
>
>            criteria = new Criteria();
>            criteria.addSelectColumn("area.postcode");
>            criteria.add(AreaPeer.POSTCODE, (Object)new String("NULL"),
>                                        Criteria.NOT_EQUAL);
>            criteria.setDistinct();
>            criteria.addAscendingOrderByColumn(AreaPeer.POSTCODE);
>            List post = BasePeer.doSelect(criteria);
>            System.out.println(post.size());
>
> which gives me a jsp error:
> [ERROR] [action] - "Servlet.service()" pour la servlet action a généré une
> exception <javax.servlet.jsp.JspException: No getter method available for
> property postcode for bean under name
> add_postcode_letters>javax.servlet.jsp.JspException: No getter method available
> for property postcode for bean under name add_postcode_letters
>
> which ultimately points to this piece of struts code on my page:
> <html:options collection="add_postcode_letters" property="postcode"
> labelProperty="postcode"/>
>
> This is strange in that if I don't have
>            criteria.addSelectColumn("area.postcode");
> and if instead of having:
>            List post = BasePeer.doSelect(criteria);
> I have:
>            List post = AreaPeer.doSelect(criteria);
>
> So, this code:
>            criteria = new Criteria();
> //          criteria.addSelectColumn("area.postcode");
>            criteria.add(AreaPeer.POSTCODE, (Object)new String("NULL"),
>                                        Criteria.NOT_EQUAL);
>            criteria.setDistinct();
>            criteria.addAscendingOrderByColumn(AreaPeer.POSTCODE);
>            List post = AreaPeer.doSelect(criteria);
>            System.out.println(post.size());
>
> It gives me a list of multiple values but doesn't whine on a missing getter
> method in a bean.
>
> Also, if instead of having:
>            List post = BasePeer.doSelect(criteria);
> I have:
>            List post = AreaPeer.doSelect(criteria);
>
> It gives me a numberFormatExceptionError:
> org.apache.torque.TorqueException: Bad conversion:
> java.lang.NumberFormatException: For input string: "BR1"
>
> Does anyone has any clues or hints?
>
> Daniel
>
> Quoting Thomas Fischer <fischer@seitenbau.net>:
>
>>
>>
>>
>>
>> Hi,
>>
>> Does your Area table have a primary key ? Consider that for reading the
>> Areas, the Peer reads _ALL_ columns from the Area table, so if e.g. a
>> primary key is read, this leads always to distinct results, so the distinct
>> has no effect at all.
>>
>> You can circumvent this by:
>> 1) manually create a view which excludes all columns except the postcode
>> column, and set up an extra peer for the class (requires editing of
>> create-db scripts)
>> 2) add the columns which to select from by hand
>> (criteria.addSelectColumns), use BasePeer to execute the query and convert
>> the result by hand.
>>
>> Maybe there are other ways to solve this.
>>
>>     Thomas
>> Daniel Curto Millet <d.millet@ucl.ac.uk> schrieb am 15.07.2005 13:13:43:
>>
>>>
>>> Thanks for the reply!
>>>
>>> It now compiles but I still get multiple values.
>>>
>>> Daniel
>>>
>>> Quoting Raphael Mankin <raph@mankin.org.uk>:
>>>
>>>> IIRC you have to cast the 2nd argument of add() to Object.I have
>>> tripped over
>>>> this one as well. The methods in the class are infelicitously
>> overloaded.
>>>>
>>>>
>>>>
>>>> On 15-Jul-2005 zcaby29@ucl.ac.uk wrote:
>>>>>
>>>>> Thanks for the reply Alvaro!
>>>>>
>>>>> If I don't use a criterion, I get another extra weird error written
>> here
>>>>> below:
>>>>> java.lang.Error: Unresolved compilation problem:
>>>>> The method add(String, Object, SqlEnum) is ambiguous for the type
>> Criteria
>>>>>
>>>>> So it has a problem with:
>>>>> criteria.add(AreaPeer.POSTCODE, "NULL", Criteria.NOT_EQUAL);
>>>>>
>>>>> If anyone has any clues or hints or anything useful, I'd be
>> verythankful,
>>>>>
>>>>> Daniel
>>>>>
>>>>> Quoting Alvaro Coronel <alvarocoronel67@yahoo.com>:
>>>>>
>>>>>> Well... it might have nothing to do with it but for me it is
>>> just weird to
>>>>>> use a Criterion there.
>>>>>>
>>>>>> What about this?
>>>>>>
>>>>>> criteria = new Criteria();
>>>>>> criteria.add(AreaPeer.POSTCODE, "NULL", Criteria.NOT_EQUAL);
>>>>>> criteria.setDistinct();
>>>>>>
>>>>>> If this selects distinct, you can go on to adding the order
>>>>>>
>>>>>> criteria.addAscendingOrderByColumn(AreaPeer.POSTCODE)
>>>>>>
>>>>>> Good luck!
>>>>>>
>>>>>> Álvaro.
>>>>>>
>>>>>> zcaby29@ucl.ac.uk wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I have a very strange problem with Torque. I'm building a website
>> using
>>>>>> struts
>>>>>> where on a certain page, a form is populated by having access to
the
>>>>>> database
>>>>>> (MySql) using Torque. So in my ActionForm, I have the following to
>>>> populate
>>>>>> an
>>>>>> option collection.
>>>>>>
>>>>>> criteria = new Criteria();
>>>>>>
>>>>>> // No postcode with a null value
>>>>>> Criteria.Criterion notNullPost = criteria.getNewCriterion
>>>>>> (AreaPeer.POSTCODE, "NULL", Criteria.NOT_EQUAL);
>>>>>> criteria.add(notNullPost);
>>>>>>
>>>>>> // Order the list
>>>>>> criteria.addAscendingOrderByColumn(AreaPeer.POSTCODE);
>>>>>>
>>>>>> // Show only distinct
>>>>>> criteria.setDistinct();
>>>>>>
>>>>>> System.out.println(criteria.toString());
>>>>>>
>>>>>> List post = AreaPeer.doSelect(criteria);
>>>>>> request.getSession().setAttribute("add_postcode_letters", post);
>>>>>>
>>>>>> The problem is that the list I get on the page is a list with
>> multiple
>>>>>> values
>>>>>> as
>>>>>> if the setDistinct() wouldn't have worked.
>>>>>>
>>>>>> Yet, when I query the database from the MySql command line
>>> using the query
>>>> I
>>>>>> got
>>>>>> from this bit of code: System.out.println(criteria.toString());
>>>>>> It works under MySql... Here's the sql query:
>>>>>> mysql> SELECT DISTINCT area.POSTCODE FROM area WHERE area.
>>> POSTCODE<>'NULL'
>>>>>> ORDER
>>>>>> BY area.POSTCODE ASC;
>>>>>>
>>>>>> The table is called area and has 5 columns including the postcode
>> column.
>>>>>> I'm using Torque 3.1, Tomcat v5 and MySql v4.1
>>>>>>
>>>>>> If anyone has any clues or hints or anything useful, I'd be
>>> very thankful,
>>>>>>
>>>>>> Daniel
>>>>>>
>>>>>>
>>>>>>
>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: torque-user-unsubscribe@db.apache.org
>>>>>> For additional commands, e-mail: torque-user-help@db.apache.org
>>>>>>
>>>>>>
>>>>>> __________________________________________________
>>>>>> Do You Yahoo!?
>>>>>> Tired of spam?  Yahoo! Mail has the best spam protection around
>>>>>> http://mail.yahoo.com
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: torque-user-unsubscribe@db.apache.org
>>>>> For additional commands, e-mail: torque-user-help@db.apache.org
>>>>
>>>> --
>>>>                                Lead us not into temptation; we
>>>>                                can find our own way.
>>>>
>>>>
>>>> Raphael Mankin
>>>> ----------------------------------
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: torque-user-unsubscribe@db.apache.org
>>>> For additional commands, e-mail: torque-user-help@db.apache.org
>>>>
>>>>
>>>
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: torque-user-unsubscribe@db.apache.org
>>> For additional commands, e-mail: torque-user-help@db.apache.org
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: torque-user-unsubscribe@db.apache.org
>> For additional commands, e-mail: torque-user-help@db.apache.org
>>
>>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: torque-user-unsubscribe@db.apache.org
> For additional commands, e-mail: torque-user-help@db.apache.org
>
>

Mime
View raw message