You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@turbine.apache.org by Jürgen Hoffmann <jh...@byteaction.de> on 2003/02/13 09:01:30 UTC

Copy criteria object

Hi All,

I am sending this question to this list, because I am receiving
MAILER-DAEMONS when following the subscription links to the torque-user
mailinglists from the torque website.

Here is my Problem:

I have a criteria Object that I build like this:

cri.add(cri.getNewCriterion(WebserverDailyPeer.DAY, (Object)
("(UNIX_TIMESTAMP(" + WebserverDailyPeer.DAY + ") between " + (von_date
/ 1000) + " and " + (bis_date / 1000) + " )"), Criteria.CUSTOM));
cri.add(WebserverDailyPeer.KID, kdid);


So when i run the 
Log.debug(WebserverDailyPeer.createQueryString(cri));
I get:
SELECT  FROM webserver_daily WHERE (UNIX_TIMESTAMP(webserver_daily.DAY)
between 1009839600 and 1041375600 ) AND webserver_daily.KID=3

Which is correct. Then I want to use a "copy" of the criteria object and
modify it like this:
myCrit = cri.clone();
myCrit.addSelectColumn("COUNT(*)");
Log.debug(WebserverDailyPeer.createQueryString(cri));

But then I get:
SELECT COUNT(*) FROM webserver_daily WHERE
webserver_daily.DAY='(UNIX_TIMESTAMP(webserver_daily.DAY) between
1009839600 and 1041375600 )' AND webserver_daily.KID=3
^^^^^^^^^^^^^^^^^^^^^

Which is incorrect!!!

Then I tried to just copy the hashtable, but same effect:
Criteria myCrit = new Criteria();
Enumeration e = cri.keys();
while (e.hasMoreElements())
{
	Object key = e.nextElement();
	myCrit.put(key, cri.get(key));
}

Can someone help me, please?

Mit freundlichen Grüssen
 
Jürgen Hoffmann
ByteACTION GmbH
 
cert. Perl Programmer
cert. Linux System Administrator
cert. Java Programmer

Besuchen Sie uns doch auf der CeBIT 2003
in Halle 4/Stand 70


---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-user-help@jakarta.apache.org


Re: Criteria Mystery

Posted by Scott Eade <se...@backstagetech.com.au>.
The coupled Torque in Turbine 2.1 may reset the offset and limit not only
when a query is executed, but also when you go criteria.toString().  The
decoupled Torque 3.0 used by Turbine 2.2 no longer alters these values for
criteria.toString(), but may still do so when you execute the query.

This behaviour depends upon the database in use - this determines whether
the database or village is used to process the offset and limit.  Look in
BasePeer.createQueryString() for the relevant code.

HTH,

Scott
-- 
Scott Eade
Backstage Technologies Pty. Ltd.
http://www.backstagetech.com.au
.Mac Chat/AIM: seade at mac dot com


On 15/02/2003 9:09 PM, "Jürgen Hoffmann" <jh...@byteaction.de> wrote:

> Hi All,
> 
> My Apologies for this very long E-Mail, but this seems to be a complex
> problem, and I wanted to hopefully present you each little piece of
> information that the experts need to solve this problem... I have
> Cross-Posted this message, since it could be a turbine or torque
> problem...
> 
> I am getting very very frustrated here. Since I have manged to count the
> rows for a given criteria in a table by doing the following in my Action
> which fills the context for the view...
> 
> cri.add(cri.getNewCriterion(WebserverDailyPeer.DAY,
> (Object)("(UNIX_TIMESTAMP(" + WebserverDailyPeer.DAY + ") between " +
> (von_date / 1000) + " and " +
> (bis_date / 1000) + " )"), Criteria.CUSTOM));
> 
> long pages = WebserverDailyPeer.getPages(cri, limit);
> Log.debug("Number of Pages in Table with Criteria: " + pages);
> 
> It works and prints
> [Sat Feb 15 10:42:15 CET 2003] -- DEBUG -- Number of Pages in Table with
> Criteria: 58
> In turbine.log
> 
> getPages is from my extended BasePeer Class in which I put the following
> functions:
> public class ByteActionBasePeer extends BasePeer
> {
> public static long getNumberOfRowsInTable(String table) throws
> TorqueException, DataSetException
> {
> String query = "SELECT COUNT(*) FROM " + table;
> return
> ((Record)executeQuery(query).get(0)).getValue(1).asLong();
> }
> 
> public static long getNumberOfRowsInTable(Criteria c) throws
> TorqueException, DataSetException
> {
> c.addSelectColumn("COUNT(*)");
> String query = createQueryString(c);
> c.getSelectColumns().clear();
> return
> ((Record)executeQuery(query).get(0)).getValue(1).asLong();
> }
> 
> public static long getPages(Criteria c, int limit) throws
> TorqueException, DataSetException
> {
> long numRows = getNumberOfRowsInTable(c);
> long pages = (numRows / limit);
> pages = ( numRows % limit == 0 ) ? pages : pages + 1;
> return pages;
> }
> 
> public static long getPages(String table, int limit) throws
> TorqueException, DataSetException
> {
> long numRows = getNumberOfRowsInTable(table);
> long pages = (numRows / limit);
> pages = ( numRows % limit == 0 ) ? pages : pages + 1;
> return pages;
> }
> }
> 
> Now I have my number of Pages, I have my Limit and I have my Index. And
> now I am adding these to the criteria,
> 
> cri.setLimit(limit);
> cri.setOffset(index);
> 
> Doing a WebserverDailyPeer.doSelect(cri); did not use the Limit and
> Index, so I thought maybe I should add the columns, since I have done a
> addSelectColumns("COUNT(*)") and a clear() in my extended BasePeer
> Class, and since Criteria sometimes behaves weird. So I did.
> 
> cri.addSelectColumn(WebserverDailyPeer.ID);
> cri.addSelectColumn(WebserverDailyPeer.DAY);
> cri.addSelectColumn(WebserverDailyPeer.AMOUNT);
> cri.addSelectColumn(WebserverDailyPeer.DOMAIN);
> cri.addSelectColumn(WebserverDailyPeer.KID);
> cri.addSelectColumn(WebserverDailyPeer.CREATION);
> cri.addSelectColumn(WebserverDailyPeer.SERVERID);
> 
> And then verifying the output via:
> 
> Log.debug("AuswerungAction",WebserverDailyPeer.createQueryString(cri));
> And this gets correctly translated to:
> [Sat Feb 15 10:42:15 CET 2003] -- DEBUG -- FROM logger:AuswerungAction:
> SELECT webserver_daily.ID, webserver_daily.DAY, webserver_daily.AMOUNT,
> webserver_daily.DOMAIN, webserver_daily.KID, webserver_daily.CREATION,
> webserver_daily.SERVERID FROM webserver_daily WHERE
> (UNIX_TIMESTAMP(webserver_daily.DAY) between 1009839600 and 1041375600 )
> LIMIT 1, 20
> 
> BUT when I then do a
> List list = WebserverDailyPeer.doSelect(cri);
> 
> The Limit and Index mysteriously disappears... As you can see here:
> 22802 [Thread-7] DEBUG util.BasePeer  - SELECT webserver_daily.ID,
> webserver_daily.DAY, webserver_daily.AMOUNT
> , webserver_daily.DOMAIN, webserver_daily.KID, webserver_daily.CREATION,
> webserver_daily.SERVERID FROM webserv
> er_daily WHERE (UNIX_TIMESTAMP(webserver_daily.DAY) between 1009839600
> and 1041375600 ) LIMIT 1, 20
> 22802 [Thread-7] DEBUG util.BasePeer  - SELECT webserver_daily.ID,
> webserver_daily.DAY, webserver_daily.AMOUNT
> , webserver_daily.DOMAIN, webserver_daily.KID, webserver_daily.CREATION,
> webserver_daily.SERVERID FROM webserv
> er_daily WHERE (UNIX_TIMESTAMP(webserver_daily.DAY) between 1009839600
> and 1041375600 )
> 
> It seems as if The Peer is doing 2 Selects...
> 
> The Complete Action Method follows below, so you can verify that I am
> not calling do Select twice:
> 
>   public void doGetwebservers(RunData data, Context context)
>       throws Exception
>   {
>       ParameterParser pp = data.getParameters();
>       int wsid = pp.getInt("wsid");
>       int kdid = pp.getInt("kdid");
>       int von_tag = pp.getInt("von_tag");
>       int bis_tag = pp.getInt("bis_tag");
>       int von_monat = pp.getInt("von_monat");
>       int bis_monat = pp.getInt("bis_monat");
>       int von_jahr = pp.getInt("von_jahr");
>       int bis_jahr = pp.getInt("bis_jahr");
>       int limit = pp.getInt("limit",20);
>       int index = pp.getInt("index",0);
> int curpage = pp.getInt("page",1);
>       String domain = pp.getString("domain");
>       Calendar von = new GregorianCalendar(von_jahr, von_monat - 1,
> von_tag);
>       long von_date = (long)((Date)von.getTime()).getTime();
>       Calendar bis = new GregorianCalendar(bis_jahr, bis_monat - 1,
> bis_tag);
>       long bis_date = (long)((Date)bis.getTime()).getTime();
> 
>       Criteria cri = new Criteria();
> 
>       if(wsid > 0)
>       {
>           cri.add(WebserverDailyPeer.SERVERID, wsid);
>       }
> 
>       if(kdid > 0)
>       {
>           cri.add(WebserverDailyPeer.KID, kdid);
>       }
> 
>       if((domain != null) && (domain.length() > 0))
>       {
>           cri.add(cri.getNewCriterion(WebserverDailyPeer.DOMAIN,
>                   (Object)(WebserverDailyPeer.DOMAIN + " LIKE '%" +
> domain + "%' "), Criteria.CUSTOM));
>           cri.addJoin(WebserverDailyPeer.DOMAIN,
> DomainConfigPeer.NAME);
>       }
> 
>       cri.add(cri.getNewCriterion(WebserverDailyPeer.DAY,
>               (Object)("(UNIX_TIMESTAMP(" + WebserverDailyPeer.DAY +
> ") between " + (von_date / 1000) + " and " +
>               (bis_date / 1000) + " )"), Criteria.CUSTOM));
> 
> long pages =
> WebserverDailyPeer.getPages(cri, limit);
> Log.debug("Number of Pages in Table with
> Criteria: " + pages);
> 
> 
> context.put("index", new
> Integer(index));
> context.put("pages", new Long(pages));
> context.put("limit", new
> Integer(limit));
> context.put("curpage", new
> Integer(curpage));
> 
> 
> Log.debug("AuswerungAction",WebserverDailyPeer.createQueryString(cri));
> 
> cri.setLimit(limit);
> cri.setOffset(1);
> 
> cri.addSelectColumn(WebserverDailyPeer.ID);
> 
> cri.addSelectColumn(WebserverDailyPeer.DAY);
> 
> cri.addSelectColumn(WebserverDailyPeer.AMOUNT);
> 
> cri.addSelectColumn(WebserverDailyPeer.DOMAIN);
> 
> cri.addSelectColumn(WebserverDailyPeer.KID);
> 
> cri.addSelectColumn(WebserverDailyPeer.CREATION);
> 
> cri.addSelectColumn(WebserverDailyPeer.SERVERID);
> 
> 
> Log.debug("AuswerungAction",WebserverDailyPeer.createQueryString(cri));
> 
>       List list = WebserverDailyPeer.doSelect(cri);
> 
>       context.put("webservers", list);
>   }
> 
> Kind regards
> 
> Jürgen Hoffmann
> ByteACTION GmbH
> 
> cert. Perl Programmer
> cert. Linux System Administrator
> cert. Java Programmer
> 
> Besuchen Sie uns doch auf der CeBIT 2003
> in Halle 4/Stand 70
> 
> 
> 
> ---------------------------------------------------------------------
> 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: turbine-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-user-help@jakarta.apache.org


Criteria Mystery

Posted by Jürgen Hoffmann <jh...@byteaction.de>.
Hi All,

My Apologies for this very long E-Mail, but this seems to be a complex
problem, and I wanted to hopefully present you each little piece of
information that the experts need to solve this problem... I have
Cross-Posted this message, since it could be a turbine or torque
problem...

I am getting very very frustrated here. Since I have manged to count the
rows for a given criteria in a table by doing the following in my Action
which fills the context for the view...

cri.add(cri.getNewCriterion(WebserverDailyPeer.DAY,
 (Object)("(UNIX_TIMESTAMP(" + WebserverDailyPeer.DAY + ") between " +
(von_date / 1000) + " and " +
 (bis_date / 1000) + " )"), Criteria.CUSTOM));

long pages = WebserverDailyPeer.getPages(cri, limit);
Log.debug("Number of Pages in Table with Criteria: " + pages);

It works and prints
[Sat Feb 15 10:42:15 CET 2003] -- DEBUG -- Number of Pages in Table with
Criteria: 58
In turbine.log

getPages is from my extended BasePeer Class in which I put the following
functions:
public class ByteActionBasePeer extends BasePeer
{
	public static long getNumberOfRowsInTable(String table) throws
TorqueException, DataSetException
	{
		String query = "SELECT COUNT(*) FROM " + table;
		return
((Record)executeQuery(query).get(0)).getValue(1).asLong();
	}

	public static long getNumberOfRowsInTable(Criteria c) throws
TorqueException, DataSetException
	{
		c.addSelectColumn("COUNT(*)");
		String query = createQueryString(c);
		c.getSelectColumns().clear();
		return
((Record)executeQuery(query).get(0)).getValue(1).asLong();
	}

	public static long getPages(Criteria c, int limit) throws
TorqueException, DataSetException
	{
		long numRows = getNumberOfRowsInTable(c);
		long pages = (numRows / limit);
		pages = ( numRows % limit == 0 ) ? pages : pages + 1;
		return pages;
	}

	public static long getPages(String table, int limit) throws
TorqueException, DataSetException
	{
		long numRows = getNumberOfRowsInTable(table);
		long pages = (numRows / limit);
		pages = ( numRows % limit == 0 ) ? pages : pages + 1;
		return pages;
	}
}

Now I have my number of Pages, I have my Limit and I have my Index. And
now I am adding these to the criteria,

cri.setLimit(limit);
cri.setOffset(index);

Doing a WebserverDailyPeer.doSelect(cri); did not use the Limit and
Index, so I thought maybe I should add the columns, since I have done a
addSelectColumns("COUNT(*)") and a clear() in my extended BasePeer
Class, and since Criteria sometimes behaves weird. So I did.

cri.addSelectColumn(WebserverDailyPeer.ID);
cri.addSelectColumn(WebserverDailyPeer.DAY);
cri.addSelectColumn(WebserverDailyPeer.AMOUNT);
cri.addSelectColumn(WebserverDailyPeer.DOMAIN);
cri.addSelectColumn(WebserverDailyPeer.KID);
cri.addSelectColumn(WebserverDailyPeer.CREATION);
cri.addSelectColumn(WebserverDailyPeer.SERVERID);

And then verifying the output via:

Log.debug("AuswerungAction",WebserverDailyPeer.createQueryString(cri));
And this gets correctly translated to:
[Sat Feb 15 10:42:15 CET 2003] -- DEBUG -- FROM logger:AuswerungAction:
SELECT webserver_daily.ID, webserver_daily.DAY, webserver_daily.AMOUNT,
webserver_daily.DOMAIN, webserver_daily.KID, webserver_daily.CREATION,
webserver_daily.SERVERID FROM webserver_daily WHERE
(UNIX_TIMESTAMP(webserver_daily.DAY) between 1009839600 and 1041375600 )
LIMIT 1, 20

BUT when I then do a 
List list = WebserverDailyPeer.doSelect(cri);

The Limit and Index mysteriously disappears... As you can see here:
22802 [Thread-7] DEBUG util.BasePeer  - SELECT webserver_daily.ID,
webserver_daily.DAY, webserver_daily.AMOUNT
, webserver_daily.DOMAIN, webserver_daily.KID, webserver_daily.CREATION,
webserver_daily.SERVERID FROM webserv
er_daily WHERE (UNIX_TIMESTAMP(webserver_daily.DAY) between 1009839600
and 1041375600 ) LIMIT 1, 20
22802 [Thread-7] DEBUG util.BasePeer  - SELECT webserver_daily.ID,
webserver_daily.DAY, webserver_daily.AMOUNT
, webserver_daily.DOMAIN, webserver_daily.KID, webserver_daily.CREATION,
webserver_daily.SERVERID FROM webserv
er_daily WHERE (UNIX_TIMESTAMP(webserver_daily.DAY) between 1009839600
and 1041375600 )

It seems as if The Peer is doing 2 Selects...

The Complete Action Method follows below, so you can verify that I am
not calling do Select twice:

    public void doGetwebservers(RunData data, Context context)
        throws Exception
    {
        ParameterParser pp = data.getParameters();
        int wsid = pp.getInt("wsid");
        int kdid = pp.getInt("kdid");
        int von_tag = pp.getInt("von_tag");
        int bis_tag = pp.getInt("bis_tag");
        int von_monat = pp.getInt("von_monat");
        int bis_monat = pp.getInt("bis_monat");
        int von_jahr = pp.getInt("von_jahr");
        int bis_jahr = pp.getInt("bis_jahr");
        int limit = pp.getInt("limit",20);
        int index = pp.getInt("index",0);
				int curpage = pp.getInt("page",1);
        String domain = pp.getString("domain");
        Calendar von = new GregorianCalendar(von_jahr, von_monat - 1,
von_tag);
        long von_date = (long)((Date)von.getTime()).getTime();
        Calendar bis = new GregorianCalendar(bis_jahr, bis_monat - 1,
bis_tag);
        long bis_date = (long)((Date)bis.getTime()).getTime();

        Criteria cri = new Criteria();

        if(wsid > 0)
        {
            cri.add(WebserverDailyPeer.SERVERID, wsid);
        }

        if(kdid > 0)
        {
            cri.add(WebserverDailyPeer.KID, kdid);
        }

        if((domain != null) && (domain.length() > 0))
        {
            cri.add(cri.getNewCriterion(WebserverDailyPeer.DOMAIN,
                    (Object)(WebserverDailyPeer.DOMAIN + " LIKE '%" +
domain + "%' "), Criteria.CUSTOM));
            cri.addJoin(WebserverDailyPeer.DOMAIN,
DomainConfigPeer.NAME);
        }

        cri.add(cri.getNewCriterion(WebserverDailyPeer.DAY,
                (Object)("(UNIX_TIMESTAMP(" + WebserverDailyPeer.DAY +
") between " + (von_date / 1000) + " and " +
                (bis_date / 1000) + " )"), Criteria.CUSTOM));

				long pages =
WebserverDailyPeer.getPages(cri, limit);
				Log.debug("Number of Pages in Table with
Criteria: " + pages);


				context.put("index", new
Integer(index));
				context.put("pages", new Long(pages));
				context.put("limit", new
Integer(limit));
				context.put("curpage", new
Integer(curpage));

	
Log.debug("AuswerungAction",WebserverDailyPeer.createQueryString(cri));

				cri.setLimit(limit);
				cri.setOffset(1);
	
cri.addSelectColumn(WebserverDailyPeer.ID);
	
cri.addSelectColumn(WebserverDailyPeer.DAY);
	
cri.addSelectColumn(WebserverDailyPeer.AMOUNT);
	
cri.addSelectColumn(WebserverDailyPeer.DOMAIN);
	
cri.addSelectColumn(WebserverDailyPeer.KID);
	
cri.addSelectColumn(WebserverDailyPeer.CREATION);
	
cri.addSelectColumn(WebserverDailyPeer.SERVERID);

	
Log.debug("AuswerungAction",WebserverDailyPeer.createQueryString(cri));
				
        List list = WebserverDailyPeer.doSelect(cri);

        context.put("webservers", list);
    }

Kind regards
 
Jürgen Hoffmann
ByteACTION GmbH
 
cert. Perl Programmer
cert. Linux System Administrator
cert. Java Programmer

Besuchen Sie uns doch auf der CeBIT 2003
in Halle 4/Stand 70



Criteria Mystery

Posted by Jürgen Hoffmann <jh...@byteaction.de>.
Hi All,

My Apologies for this very long E-Mail, but this seems to be a complex
problem, and I wanted to hopefully present you each little piece of
information that the experts need to solve this problem... I have
Cross-Posted this message, since it could be a turbine or torque
problem...

I am getting very very frustrated here. Since I have manged to count the
rows for a given criteria in a table by doing the following in my Action
which fills the context for the view...

cri.add(cri.getNewCriterion(WebserverDailyPeer.DAY,
 (Object)("(UNIX_TIMESTAMP(" + WebserverDailyPeer.DAY + ") between " +
(von_date / 1000) + " and " +
 (bis_date / 1000) + " )"), Criteria.CUSTOM));

long pages = WebserverDailyPeer.getPages(cri, limit);
Log.debug("Number of Pages in Table with Criteria: " + pages);

It works and prints
[Sat Feb 15 10:42:15 CET 2003] -- DEBUG -- Number of Pages in Table with
Criteria: 58
In turbine.log

getPages is from my extended BasePeer Class in which I put the following
functions:
public class ByteActionBasePeer extends BasePeer
{
	public static long getNumberOfRowsInTable(String table) throws
TorqueException, DataSetException
	{
		String query = "SELECT COUNT(*) FROM " + table;
		return
((Record)executeQuery(query).get(0)).getValue(1).asLong();
	}

	public static long getNumberOfRowsInTable(Criteria c) throws
TorqueException, DataSetException
	{
		c.addSelectColumn("COUNT(*)");
		String query = createQueryString(c);
		c.getSelectColumns().clear();
		return
((Record)executeQuery(query).get(0)).getValue(1).asLong();
	}

	public static long getPages(Criteria c, int limit) throws
TorqueException, DataSetException
	{
		long numRows = getNumberOfRowsInTable(c);
		long pages = (numRows / limit);
		pages = ( numRows % limit == 0 ) ? pages : pages + 1;
		return pages;
	}

	public static long getPages(String table, int limit) throws
TorqueException, DataSetException
	{
		long numRows = getNumberOfRowsInTable(table);
		long pages = (numRows / limit);
		pages = ( numRows % limit == 0 ) ? pages : pages + 1;
		return pages;
	}
}

Now I have my number of Pages, I have my Limit and I have my Index. And
now I am adding these to the criteria,

cri.setLimit(limit);
cri.setOffset(index);

Doing a WebserverDailyPeer.doSelect(cri); did not use the Limit and
Index, so I thought maybe I should add the columns, since I have done a
addSelectColumns("COUNT(*)") and a clear() in my extended BasePeer
Class, and since Criteria sometimes behaves weird. So I did.

cri.addSelectColumn(WebserverDailyPeer.ID);
cri.addSelectColumn(WebserverDailyPeer.DAY);
cri.addSelectColumn(WebserverDailyPeer.AMOUNT);
cri.addSelectColumn(WebserverDailyPeer.DOMAIN);
cri.addSelectColumn(WebserverDailyPeer.KID);
cri.addSelectColumn(WebserverDailyPeer.CREATION);
cri.addSelectColumn(WebserverDailyPeer.SERVERID);

And then verifying the output via:

Log.debug("AuswerungAction",WebserverDailyPeer.createQueryString(cri));
And this gets correctly translated to:
[Sat Feb 15 10:42:15 CET 2003] -- DEBUG -- FROM logger:AuswerungAction:
SELECT webserver_daily.ID, webserver_daily.DAY, webserver_daily.AMOUNT,
webserver_daily.DOMAIN, webserver_daily.KID, webserver_daily.CREATION,
webserver_daily.SERVERID FROM webserver_daily WHERE
(UNIX_TIMESTAMP(webserver_daily.DAY) between 1009839600 and 1041375600 )
LIMIT 1, 20

BUT when I then do a 
List list = WebserverDailyPeer.doSelect(cri);

The Limit and Index mysteriously disappears... As you can see here:
22802 [Thread-7] DEBUG util.BasePeer  - SELECT webserver_daily.ID,
webserver_daily.DAY, webserver_daily.AMOUNT
, webserver_daily.DOMAIN, webserver_daily.KID, webserver_daily.CREATION,
webserver_daily.SERVERID FROM webserv
er_daily WHERE (UNIX_TIMESTAMP(webserver_daily.DAY) between 1009839600
and 1041375600 ) LIMIT 1, 20
22802 [Thread-7] DEBUG util.BasePeer  - SELECT webserver_daily.ID,
webserver_daily.DAY, webserver_daily.AMOUNT
, webserver_daily.DOMAIN, webserver_daily.KID, webserver_daily.CREATION,
webserver_daily.SERVERID FROM webserv
er_daily WHERE (UNIX_TIMESTAMP(webserver_daily.DAY) between 1009839600
and 1041375600 )

It seems as if The Peer is doing 2 Selects...

The Complete Action Method follows below, so you can verify that I am
not calling do Select twice:

    public void doGetwebservers(RunData data, Context context)
        throws Exception
    {
        ParameterParser pp = data.getParameters();
        int wsid = pp.getInt("wsid");
        int kdid = pp.getInt("kdid");
        int von_tag = pp.getInt("von_tag");
        int bis_tag = pp.getInt("bis_tag");
        int von_monat = pp.getInt("von_monat");
        int bis_monat = pp.getInt("bis_monat");
        int von_jahr = pp.getInt("von_jahr");
        int bis_jahr = pp.getInt("bis_jahr");
        int limit = pp.getInt("limit",20);
        int index = pp.getInt("index",0);
				int curpage = pp.getInt("page",1);
        String domain = pp.getString("domain");
        Calendar von = new GregorianCalendar(von_jahr, von_monat - 1,
von_tag);
        long von_date = (long)((Date)von.getTime()).getTime();
        Calendar bis = new GregorianCalendar(bis_jahr, bis_monat - 1,
bis_tag);
        long bis_date = (long)((Date)bis.getTime()).getTime();

        Criteria cri = new Criteria();

        if(wsid > 0)
        {
            cri.add(WebserverDailyPeer.SERVERID, wsid);
        }

        if(kdid > 0)
        {
            cri.add(WebserverDailyPeer.KID, kdid);
        }

        if((domain != null) && (domain.length() > 0))
        {
            cri.add(cri.getNewCriterion(WebserverDailyPeer.DOMAIN,
                    (Object)(WebserverDailyPeer.DOMAIN + " LIKE '%" +
domain + "%' "), Criteria.CUSTOM));
            cri.addJoin(WebserverDailyPeer.DOMAIN,
DomainConfigPeer.NAME);
        }

        cri.add(cri.getNewCriterion(WebserverDailyPeer.DAY,
                (Object)("(UNIX_TIMESTAMP(" + WebserverDailyPeer.DAY +
") between " + (von_date / 1000) + " and " +
                (bis_date / 1000) + " )"), Criteria.CUSTOM));

				long pages =
WebserverDailyPeer.getPages(cri, limit);
				Log.debug("Number of Pages in Table with
Criteria: " + pages);


				context.put("index", new
Integer(index));
				context.put("pages", new Long(pages));
				context.put("limit", new
Integer(limit));
				context.put("curpage", new
Integer(curpage));

	
Log.debug("AuswerungAction",WebserverDailyPeer.createQueryString(cri));

				cri.setLimit(limit);
				cri.setOffset(1);
	
cri.addSelectColumn(WebserverDailyPeer.ID);
	
cri.addSelectColumn(WebserverDailyPeer.DAY);
	
cri.addSelectColumn(WebserverDailyPeer.AMOUNT);
	
cri.addSelectColumn(WebserverDailyPeer.DOMAIN);
	
cri.addSelectColumn(WebserverDailyPeer.KID);
	
cri.addSelectColumn(WebserverDailyPeer.CREATION);
	
cri.addSelectColumn(WebserverDailyPeer.SERVERID);

	
Log.debug("AuswerungAction",WebserverDailyPeer.createQueryString(cri));
				
        List list = WebserverDailyPeer.doSelect(cri);

        context.put("webservers", list);
    }

Kind regards
 
Jürgen Hoffmann
ByteACTION GmbH
 
cert. Perl Programmer
cert. Linux System Administrator
cert. Java Programmer

Besuchen Sie uns doch auf der CeBIT 2003
in Halle 4/Stand 70



---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-user-help@jakarta.apache.org


AW: AW: Copy criteria object

Posted by Jürgen Hoffmann <jh...@byteaction.de>.
Hi,

According to
http://jakarta.apache.org/turbine/torque-3.0.0/schema-reference.html

The database element takes the following attributes baseClass and/or
basePeer which will be used by Torque.

Kind regards
 
Jürgen Hoffmann
ByteACTION GmbH
 
cert. Perl Programmer
cert. Linux System Administrator
cert. Java Programmer

Besuchen Sie uns doch auf der CeBIT 2003
in Halle 4/Stand 70


-----Ursprüngliche Nachricht-----
Von: Marc Lustig [mailto:mail@marclustig.com] 
Gesendet: Donnerstag, 13. Februar 2003 18:05
An: Turbine Torque Users List
Betreff: AW: AW: Copy criteria object


Jürgen,
do I understand you correct, you extended Torque's BasePeer class and
added custom functionality? This is something that I also wanted to do,
not only for BasePeer, but also for BaseObject. But I wonder how do you
tell Torque to use your Peer class when generating the Peers, instead of
BasePeer? I can't find a property in
http://jakarta.apache.org/turbine/torque-3.0.0/properties-reference.html

I'm curious to know ...





> -----Ursprüngliche Nachricht-----
> Von: Jürgen Hoffmann [mailto:jh@byteaction.de]
> Gesendet: Donnerstag, 13. Februar 2003 15:44
> An: 'Turbine Torque Users List'
> Betreff: AW: AW: Copy criteria object
>
>
> Hi,
>
> Thanx a lot for cheering me up this morning, but I actually found a 
> solution for the problem.
>
> This is how (my Extended BasePeer):
> 	public static long getNumberOfRowsInTable(String table, Criteria
> c) throws TorqueException, DataSetException
> 	{
> 		c.addSelectColumn("COUNT(*)");
> 		String query = createQueryString(c);
> 		Log.debug("Query: " + query);
> 		c.getSelectColumns().clear();
> 		Log.debug("Query with original Criteria: " +
> createQueryString(c));
> 		return
> ((Record)executeQuery(query).get(0)).getValue(1).asLong();
> 	}
>
> I bet you see where the trick is ;)
> (All the logs were just for debugging purposes)
>
> P.S. Anyone interested in a lazy_paging macro for Globalmacros? And a 
> Patch for BasePeer to support this homegrown?
>
> Kind regards
>
> Jürgen Hoffmann
> ByteACTION GmbH
>
> cert. Perl Programmer
> cert. Linux System Administrator
> cert. Java Programmer
>
> Besuchen Sie uns doch auf der CeBIT 2003
> in Halle 4/Stand 70
>
>
> -----Ursprüngliche Nachricht-----
> Von: peter riegersperger [mailto:rick@subnet.at]
> Gesendet: Donnerstag, 13. Februar 2003 11:40
> An: Turbine Torque Users List
> Betreff: Re: AW: Copy criteria object
>
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> [...]
> > > Which is correct. Then I want to use a "copy" of the criteria 
> > > object
>
> > > and modify it like this: myCrit = cri.clone();
> > > myCrit.addSelectColumn("COUNT(*)");
> > > Log.debug(WebserverDailyPeer.createQueryString(cri));
> > >
> > > But then I get:
> > > SELECT COUNT(*) FROM webserver_daily WHERE
> > > webserver_daily.DAY='(UNIX_TIMESTAMP(webserver_daily.DAY) between 
> > > 1009839600 and 1041375600 )' AND webserver_daily.KID=3
>
> apparently, Criteria does not implement clone().
> if it cheers you up, you're not alone: 
> http://www.mail-archive.com/turbine-torque-user@jakarta.apache.org/msg
> 01
> 480.html
>
> (probably you find something useful for you in this thread)
>
> i ended up working around this problem by creating a specific query 
> for Counts, either with Criteria (it should work if you just use the 
> Criteria one time), or with the village objects themself.
>
> rick
>
>
> - --
> |-
> | peter riegersperger  <ri...@subnet.at>
> |-
> | ein windows switcher tagebuch: 
> |http://forum.subnet.at/viewforum.php?f=22
> |-
> | subnet
> | platform for media art and experimental technologies
> |-
> | http://www.subnet.at/
> |-
> | muehlbacherhofweg 5 // 5020 salzburg // austria
> |-
> | fon/fax +43/662/842 897
> |-
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.0.7 (GNU/Linux)
>
> iD8DBQE+S3X4IMP39JYOy9IRAh6YAKDYqPN9i23ZLVRWMi2WjJ93JQDfMgCfT9Ea
> sj1QPXpekJEMzf2anbyMO9U=
> =YFuR
> -----END PGP SIGNATURE-----
>
>
> ---------------------------------------------------------------------
> 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



AW: AW: Copy criteria object

Posted by Marc Lustig <ma...@marclustig.com>.
Jürgen,
do I understand you correct, you extended Torque's BasePeer class and added
custom functionality?
This is something that I also wanted to do, not only for BasePeer, but also
for BaseObject.
But I wonder how do you tell Torque to use your Peer class when generating
the Peers, instead of BasePeer?
I can't find a property in
http://jakarta.apache.org/turbine/torque-3.0.0/properties-reference.html

I'm curious to know ...





> -----Ursprüngliche Nachricht-----
> Von: Jürgen Hoffmann [mailto:jh@byteaction.de]
> Gesendet: Donnerstag, 13. Februar 2003 15:44
> An: 'Turbine Torque Users List'
> Betreff: AW: AW: Copy criteria object
>
>
> Hi,
>
> Thanx a lot for cheering me up this morning, but I actually found a
> solution for the problem.
>
> This is how (my Extended BasePeer):
> 	public static long getNumberOfRowsInTable(String table, Criteria
> c) throws TorqueException, DataSetException
> 	{
> 		c.addSelectColumn("COUNT(*)");
> 		String query = createQueryString(c);
> 		Log.debug("Query: " + query);
> 		c.getSelectColumns().clear();
> 		Log.debug("Query with original Criteria: " +
> createQueryString(c));
> 		return
> ((Record)executeQuery(query).get(0)).getValue(1).asLong();
> 	}
>
> I bet you see where the trick is ;)
> (All the logs were just for debugging purposes)
>
> P.S. Anyone interested in a lazy_paging macro for Globalmacros? And a
> Patch for BasePeer to support this homegrown?
>
> Kind regards
>
> Jürgen Hoffmann
> ByteACTION GmbH
>
> cert. Perl Programmer
> cert. Linux System Administrator
> cert. Java Programmer
>
> Besuchen Sie uns doch auf der CeBIT 2003
> in Halle 4/Stand 70
>
>
> -----Ursprüngliche Nachricht-----
> Von: peter riegersperger [mailto:rick@subnet.at]
> Gesendet: Donnerstag, 13. Februar 2003 11:40
> An: Turbine Torque Users List
> Betreff: Re: AW: Copy criteria object
>
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> [...]
> > > Which is correct. Then I want to use a "copy" of the criteria object
>
> > > and modify it like this: myCrit = cri.clone();
> > > myCrit.addSelectColumn("COUNT(*)");
> > > Log.debug(WebserverDailyPeer.createQueryString(cri));
> > >
> > > But then I get:
> > > SELECT COUNT(*) FROM webserver_daily WHERE
> > > webserver_daily.DAY='(UNIX_TIMESTAMP(webserver_daily.DAY) between
> > > 1009839600 and 1041375600 )' AND webserver_daily.KID=3
>
> apparently, Criteria does not implement clone().
> if it cheers you up, you're not alone:
> http://www.mail-archive.com/turbine-torque-user@jakarta.apache.org/msg01
> 480.html
>
> (probably you find something useful for you in this thread)
>
> i ended up working around this problem by creating a specific query for
> Counts, either with Criteria (it should work if you just use the
> Criteria one
> time), or with the village objects themself.
>
> rick
>
>
> - --
> |-
> | peter riegersperger  <ri...@subnet.at>
> |-
> | ein windows switcher tagebuch:
> |http://forum.subnet.at/viewforum.php?f=22
> |-
> | subnet
> | platform for media art and experimental technologies
> |-
> | http://www.subnet.at/
> |-
> | muehlbacherhofweg 5 // 5020 salzburg // austria
> |-
> | fon/fax +43/662/842 897
> |-
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.0.7 (GNU/Linux)
>
> iD8DBQE+S3X4IMP39JYOy9IRAh6YAKDYqPN9i23ZLVRWMi2WjJ93JQDfMgCfT9Ea
> sj1QPXpekJEMzf2anbyMO9U=
> =YFuR
> -----END PGP SIGNATURE-----
>
>
> ---------------------------------------------------------------------
> 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
>


AW: AW: Copy criteria object

Posted by Jürgen Hoffmann <jh...@byteaction.de>.
Hi, 

Thanx a lot for cheering me up this morning, but I actually found a
solution for the problem.

This is how (my Extended BasePeer):
	public static long getNumberOfRowsInTable(String table, Criteria
c) throws TorqueException, DataSetException
	{
		c.addSelectColumn("COUNT(*)");
		String query = createQueryString(c);
		Log.debug("Query: " + query);
		c.getSelectColumns().clear();
		Log.debug("Query with original Criteria: " +
createQueryString(c));
		return
((Record)executeQuery(query).get(0)).getValue(1).asLong();
	}

I bet you see where the trick is ;)
(All the logs were just for debugging purposes)

P.S. Anyone interested in a lazy_paging macro for Globalmacros? And a
Patch for BasePeer to support this homegrown?

Kind regards
 
Jürgen Hoffmann
ByteACTION GmbH
 
cert. Perl Programmer
cert. Linux System Administrator
cert. Java Programmer

Besuchen Sie uns doch auf der CeBIT 2003
in Halle 4/Stand 70


-----Ursprüngliche Nachricht-----
Von: peter riegersperger [mailto:rick@subnet.at] 
Gesendet: Donnerstag, 13. Februar 2003 11:40
An: Turbine Torque Users List
Betreff: Re: AW: Copy criteria object


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

[...]
> > Which is correct. Then I want to use a "copy" of the criteria object

> > and modify it like this: myCrit = cri.clone();
> > myCrit.addSelectColumn("COUNT(*)");
> > Log.debug(WebserverDailyPeer.createQueryString(cri));
> >
> > But then I get:
> > SELECT COUNT(*) FROM webserver_daily WHERE
> > webserver_daily.DAY='(UNIX_TIMESTAMP(webserver_daily.DAY) between 
> > 1009839600 and 1041375600 )' AND webserver_daily.KID=3

apparently, Criteria does not implement clone().
if it cheers you up, you're not alone:
http://www.mail-archive.com/turbine-torque-user@jakarta.apache.org/msg01
480.html

(probably you find something useful for you in this thread)

i ended up working around this problem by creating a specific query for 
Counts, either with Criteria (it should work if you just use the
Criteria one 
time), or with the village objects themself.

rick


- -- 
|-
| peter riegersperger  <ri...@subnet.at>
|-
| ein windows switcher tagebuch:  
|http://forum.subnet.at/viewforum.php?f=22
|-
| subnet
| platform for media art and experimental technologies
|-
| http://www.subnet.at/
|-
| muehlbacherhofweg 5 // 5020 salzburg // austria
|-
| fon/fax +43/662/842 897
|-
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)

iD8DBQE+S3X4IMP39JYOy9IRAh6YAKDYqPN9i23ZLVRWMi2WjJ93JQDfMgCfT9Ea
sj1QPXpekJEMzf2anbyMO9U=
=YFuR
-----END PGP SIGNATURE-----


---------------------------------------------------------------------
To unsubscribe, e-mail: torque-user-unsubscribe@db.apache.org
For additional commands, e-mail: torque-user-help@db.apache.org



Re: AW: Copy criteria object

Posted by peter riegersperger <ri...@subnet.at>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

[...]
> > Which is correct. Then I want to use a "copy" of the criteria object and
> > modify it like this:
> > myCrit = cri.clone();
> > myCrit.addSelectColumn("COUNT(*)");
> > Log.debug(WebserverDailyPeer.createQueryString(cri));
> >
> > But then I get:
> > SELECT COUNT(*) FROM webserver_daily WHERE
> > webserver_daily.DAY='(UNIX_TIMESTAMP(webserver_daily.DAY) between
> > 1009839600 and 1041375600 )' AND webserver_daily.KID=3

apparently, Criteria does not implement clone().
if it cheers you up, you're not alone:
http://www.mail-archive.com/turbine-torque-user@jakarta.apache.org/msg01480.html

(probably you find something useful for you in this thread)

i ended up working around this problem by creating a specific query for 
Counts, either with Criteria (it should work if you just use the Criteria one 
time), or with the village objects themself.

rick


- -- 
|-
| peter riegersperger  <ri...@subnet.at>
|-
| ein windows switcher tagebuch:
| http://forum.subnet.at/viewforum.php?f=22
|-
| subnet
| platform for media art and experimental technologies
|-
| http://www.subnet.at/
|-
| muehlbacherhofweg 5 // 5020 salzburg // austria
|-
| fon/fax +43/662/842 897
|- 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)

iD8DBQE+S3X4IMP39JYOy9IRAh6YAKDYqPN9i23ZLVRWMi2WjJ93JQDfMgCfT9Ea
sj1QPXpekJEMzf2anbyMO9U=
=YFuR
-----END PGP SIGNATURE-----


AW: Copy criteria object

Posted by Jürgen Hoffmann <jh...@byteaction.de>.
Hi Marc,

In my Case:
Com.workingdogs.village.Record r =
WebserverDailyPeer.executeQuery(Criteria).get(0);
long rows = r.getValue(1).asLong();

Kind regards
 
Jürgen Hoffmann
ByteACTION GmbH
 
cert. Perl Programmer
cert. Linux System Administrator
cert. Java Programmer

Besuchen Sie uns doch auf der CeBIT 2003
in Halle 4/Stand 70


-----Ursprüngliche Nachricht-----
Von: Marc Lustig [mailto:mail@marclustig.com] 
Gesendet: Donnerstag, 13. Februar 2003 10:35
An: Torque Users List
Betreff: AW: Copy criteria object


Jürgen, I have a general question regarding your sql-construction. Did
you ever got the count(*) function working using
myCrit.addSelectColumn("COUNT(*)");
?
What Peer-method do you call to retrieve the result?
If you call doSelect(c) on the Peer how would Torque be able to map the
result delivered by your db?
COUNT(*) doesn't return any field-names, but only the number.

I myself have realized the COUNT(*) task by hard-coding a JDBC
Statement.

Gruss
Marc


> -----Ursprüngliche Nachricht-----
> Von: Jürgen Hoffmann [mailto:jh@byteaction.de]
> Gesendet: Donnerstag, 13. Februar 2003 09:02
> An: turbine-user@jakarta.apache.org
> Betreff: Copy criteria object
>
>
> Hi All,
>
> I am sending this question to this list, because I am receiving 
> MAILER-DAEMONS when following the subscription links to the 
> torque-user mailinglists from the torque website.
>
> Here is my Problem:
>
> I have a criteria Object that I build like this:
>
> cri.add(cri.getNewCriterion(WebserverDailyPeer.DAY, (Object) 
> ("(UNIX_TIMESTAMP(" + WebserverDailyPeer.DAY + ") between " + 
> (von_date / 1000) + " and " + (bis_date / 1000) + " )"), 
> Criteria.CUSTOM)); cri.add(WebserverDailyPeer.KID, kdid);
>
>
> So when i run the
> Log.debug(WebserverDailyPeer.createQueryString(cri));
> I get:
> SELECT  FROM webserver_daily WHERE 
> (UNIX_TIMESTAMP(webserver_daily.DAY)
> between 1009839600 and 1041375600 ) AND webserver_daily.KID=3
>
> Which is correct. Then I want to use a "copy" of the criteria object 
> and modify it like this: myCrit = cri.clone();
> myCrit.addSelectColumn("COUNT(*)");
> Log.debug(WebserverDailyPeer.createQueryString(cri));
>
> But then I get:
> SELECT COUNT(*) FROM webserver_daily WHERE
> webserver_daily.DAY='(UNIX_TIMESTAMP(webserver_daily.DAY) between 
> 1009839600 and 1041375600 )' AND webserver_daily.KID=3 
> ^^^^^^^^^^^^^^^^^^^^^
>
> Which is incorrect!!!
>
> Then I tried to just copy the hashtable, but same effect: Criteria 
> myCrit = new Criteria(); Enumeration e = cri.keys();
> while (e.hasMoreElements())
> {
> 	Object key = e.nextElement();
> 	myCrit.put(key, cri.get(key));
> }
>
> Can someone help me, please?
>
> Mit freundlichen Grüssen
>
> Jürgen Hoffmann
> ByteACTION GmbH
>
> cert. Perl Programmer
> cert. Linux System Administrator
> cert. Java Programmer
>
> Besuchen Sie uns doch auf der CeBIT 2003
> in Halle 4/Stand 70
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: turbine-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: turbine-user-help@jakarta.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: torque-user-unsubscribe@db.apache.org
For additional commands, e-mail: torque-user-help@db.apache.org



AW: Copy criteria object

Posted by Marc Lustig <ma...@marclustig.com>.
Jürgen, I have a general question regarding your sql-construction.
Did you ever got the count(*) function working using
myCrit.addSelectColumn("COUNT(*)");
?
What Peer-method do you call to retrieve the result?
If you call doSelect(c) on the Peer how would Torque be able to map the
result delivered by your db?
COUNT(*) doesn't return any field-names, but only the number.

I myself have realized the COUNT(*) task by hard-coding a JDBC Statement.

Gruss
Marc


> -----Ursprüngliche Nachricht-----
> Von: Jürgen Hoffmann [mailto:jh@byteaction.de]
> Gesendet: Donnerstag, 13. Februar 2003 09:02
> An: turbine-user@jakarta.apache.org
> Betreff: Copy criteria object
>
>
> Hi All,
>
> I am sending this question to this list, because I am receiving
> MAILER-DAEMONS when following the subscription links to the torque-user
> mailinglists from the torque website.
>
> Here is my Problem:
>
> I have a criteria Object that I build like this:
>
> cri.add(cri.getNewCriterion(WebserverDailyPeer.DAY, (Object)
> ("(UNIX_TIMESTAMP(" + WebserverDailyPeer.DAY + ") between " + (von_date
> / 1000) + " and " + (bis_date / 1000) + " )"), Criteria.CUSTOM));
> cri.add(WebserverDailyPeer.KID, kdid);
>
>
> So when i run the
> Log.debug(WebserverDailyPeer.createQueryString(cri));
> I get:
> SELECT  FROM webserver_daily WHERE (UNIX_TIMESTAMP(webserver_daily.DAY)
> between 1009839600 and 1041375600 ) AND webserver_daily.KID=3
>
> Which is correct. Then I want to use a "copy" of the criteria object and
> modify it like this:
> myCrit = cri.clone();
> myCrit.addSelectColumn("COUNT(*)");
> Log.debug(WebserverDailyPeer.createQueryString(cri));
>
> But then I get:
> SELECT COUNT(*) FROM webserver_daily WHERE
> webserver_daily.DAY='(UNIX_TIMESTAMP(webserver_daily.DAY) between
> 1009839600 and 1041375600 )' AND webserver_daily.KID=3
> ^^^^^^^^^^^^^^^^^^^^^
>
> Which is incorrect!!!
>
> Then I tried to just copy the hashtable, but same effect:
> Criteria myCrit = new Criteria();
> Enumeration e = cri.keys();
> while (e.hasMoreElements())
> {
> 	Object key = e.nextElement();
> 	myCrit.put(key, cri.get(key));
> }
>
> Can someone help me, please?
>
> Mit freundlichen Grüssen
>
> Jürgen Hoffmann
> ByteACTION GmbH
>
> cert. Perl Programmer
> cert. Linux System Administrator
> cert. Java Programmer
>
> Besuchen Sie uns doch auf der CeBIT 2003
> in Halle 4/Stand 70
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: turbine-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: turbine-user-help@jakarta.apache.org
>


AW: Copy criteria object

Posted by Marc Lustig <ma...@marclustig.com>.
Jürgen,
the new address is torque-user@db.apache.org



> -----Ursprüngliche Nachricht-----
> Von: Jürgen Hoffmann [mailto:jh@byteaction.de]
> Gesendet: Donnerstag, 13. Februar 2003 09:02
> An: turbine-user@jakarta.apache.org
> Betreff: Copy criteria object
>
>
> Hi All,
>
> I am sending this question to this list, because I am receiving
> MAILER-DAEMONS when following the subscription links to the torque-user
> mailinglists from the torque website.
>
> Here is my Problem:
>
> I have a criteria Object that I build like this:
>
> cri.add(cri.getNewCriterion(WebserverDailyPeer.DAY, (Object)
> ("(UNIX_TIMESTAMP(" + WebserverDailyPeer.DAY + ") between " + (von_date
> / 1000) + " and " + (bis_date / 1000) + " )"), Criteria.CUSTOM));
> cri.add(WebserverDailyPeer.KID, kdid);
>
>
> So when i run the
> Log.debug(WebserverDailyPeer.createQueryString(cri));
> I get:
> SELECT  FROM webserver_daily WHERE (UNIX_TIMESTAMP(webserver_daily.DAY)
> between 1009839600 and 1041375600 ) AND webserver_daily.KID=3
>
> Which is correct. Then I want to use a "copy" of the criteria object and
> modify it like this:
> myCrit = cri.clone();
> myCrit.addSelectColumn("COUNT(*)");
> Log.debug(WebserverDailyPeer.createQueryString(cri));
>
> But then I get:
> SELECT COUNT(*) FROM webserver_daily WHERE
> webserver_daily.DAY='(UNIX_TIMESTAMP(webserver_daily.DAY) between
> 1009839600 and 1041375600 )' AND webserver_daily.KID=3
> ^^^^^^^^^^^^^^^^^^^^^
>
> Which is incorrect!!!
>
> Then I tried to just copy the hashtable, but same effect:
> Criteria myCrit = new Criteria();
> Enumeration e = cri.keys();
> while (e.hasMoreElements())
> {
> 	Object key = e.nextElement();
> 	myCrit.put(key, cri.get(key));
> }
>
> Can someone help me, please?
>
> Mit freundlichen Grüssen
>
> Jürgen Hoffmann
> ByteACTION GmbH
>
> cert. Perl Programmer
> cert. Linux System Administrator
> cert. Java Programmer
>
> Besuchen Sie uns doch auf der CeBIT 2003
> in Halle 4/Stand 70
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: turbine-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: turbine-user-help@jakarta.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-user-help@jakarta.apache.org