You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cayenne.apache.org by Amedeo Mantica <am...@me.com> on 2017/04/29 13:49:25 UTC
Raw query
Hi all,
Ho to execute a simple raw query with cayenne ?
let say: SELECT COUNT(1) FROM MY_ENTITY;
Thank you
Amedeo
Re: Raw query
Posted by Amedeo Mantica <am...@me.com>.
thank you so much !
Amedeo
> On 29 Apr 2017, at 16:22, Nikita Timofeev <nt...@objectstyle.com> wrote:
>
> Hi Amedeo,
>
> For raw queries you can use SQLTemplate, like this:
>
> SQLTemplate query = new SQLTemplate(MyEntity.class, "SELECT COUNT(1)
> FROM MY_ENTITY");
> query.setFetchingDataRows(true);
> List<DataRow> rows = (List<DataRow>) context.performQuery(query);
>
> You can also use aggregate functions directly with Cayenne API (since
> version 4.0.M5):
>
> long count = ObjectSelect.query(MyEntity.class).selectCount(context);
>
> Hope this helps!
>
> On Sat, Apr 29, 2017 at 4:49 PM, Amedeo Mantica <am...@me.com> wrote:
>> Hi all,
>>
>> Ho to execute a simple raw query with cayenne ?
>>
>> let say: SELECT COUNT(1) FROM MY_ENTITY;
>>
>> Thank you
>> Amedeo
>
>
>
> --
> Best regards,
> Nikita Timofeev
Re: Raw query
Posted by Amedeo Mantica <am...@me.com>.
cool, thank you
> On 1 May 2017, at 13:52, Michael Gentry <bl...@gmail.com> wrote:
>
> Hi Amedeo,
>
> Another option for 3.1 is to use my AggregateUtils:
>
> https://github.com/mrg/cbe/tree/master/FetchingObjects/Aggregates/src/main/java/cbe/fetching/utilities
>
> (You'd need both of the files there.)
>
> With it you get count, min, max, avg, and sum functions.
>
> For your example, this is how you would do a count:
>
> SelectQuery query = new SelectQuery(MyEntity.class);
> long count = AggregateUtils.count(dataContext, query);
>
> An example of all 5 aggregate functions in use can be found here:
>
> https://github.com/mrg/cbe/blob/master/FetchingObjects/Aggregates/src/main/java/cbe/fetching/Aggregates.java
>
> mrg
>
>
> On Mon, May 1, 2017 at 3:55 AM, Andrus Adamchik <an...@objectstyle.org>
> wrote:
>
>> SQLTemplate it is then.
>>
>>> On Apr 30, 2017, at 9:02 PM, Amedeo Mantica <am...@me.com>
>> wrote:
>>>
>>> Cool.
>>> However I'm using the 3.1.2 yet
>>> Amedeo
>>>
>>>> On 30 Apr 2017, at 10:21, Andrus Adamchik <an...@objectstyle.org>
>> wrote:
>>>>
>>>>> SQLTemplate query = new SQLTemplate(MyEntity.class, "SELECT COUNT(1)
>>>>> FROM MY_ENTITY");
>>>>> query.setFetchingDataRows(true);
>>>>> List<DataRow> rows = (List<DataRow>) context.performQuery(query);
>>>>
>>>> Or you can use SQLSelect as a type-safe and more user-friendly flavor
>> doing the same thing:
>>>>
>>>> List<DataRow> rows = SQLSelect.dataRowQuery("SELECT COUNT(1) FROM
>> MY_ENTITY").select(context);
>>>>
>>>>> You can also use aggregate functions directly with Cayenne API (since
>>>>> version 4.0.M5):
>>>>>
>>>>> long count = ObjectSelect.query(MyEntity.class).selectCount(context);
>>>>
>>>> Yep, this one is the best option.
>>>>
>>>> Andrus
>>>>
>>>>
>>>>> On Apr 29, 2017, at 5:22 PM, Nikita Timofeev <
>> ntimofeev@objectstyle.com> wrote:
>>>>>
>>>>> Hi Amedeo,
>>>>>
>>>>> For raw queries you can use SQLTemplate, like this:
>>>>>
>>>>> SQLTemplate query = new SQLTemplate(MyEntity.class, "SELECT COUNT(1)
>>>>> FROM MY_ENTITY");
>>>>> query.setFetchingDataRows(true);
>>>>> List<DataRow> rows = (List<DataRow>) context.performQuery(query);
>>>>>
>>>>> You can also use aggregate functions directly with Cayenne API (since
>>>>> version 4.0.M5):
>>>>>
>>>>> long count = ObjectSelect.query(MyEntity.class).selectCount(context);
>>>>>
>>>>> Hope this helps!
>>>>>
>>>>> On Sat, Apr 29, 2017 at 4:49 PM, Amedeo Mantica <am...@me.com>
>> wrote:
>>>>>> Hi all,
>>>>>>
>>>>>> Ho to execute a simple raw query with cayenne ?
>>>>>>
>>>>>> let say: SELECT COUNT(1) FROM MY_ENTITY;
>>>>>>
>>>>>> Thank you
>>>>>> Amedeo
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best regards,
>>>>> Nikita Timofeev
>>>>
>>>
>>
>>
Re: Raw query
Posted by Michael Gentry <bl...@gmail.com>.
Hi Amedeo,
Another option for 3.1 is to use my AggregateUtils:
https://github.com/mrg/cbe/tree/master/FetchingObjects/Aggregates/src/main/java/cbe/fetching/utilities
(You'd need both of the files there.)
With it you get count, min, max, avg, and sum functions.
For your example, this is how you would do a count:
SelectQuery query = new SelectQuery(MyEntity.class);
long count = AggregateUtils.count(dataContext, query);
An example of all 5 aggregate functions in use can be found here:
https://github.com/mrg/cbe/blob/master/FetchingObjects/Aggregates/src/main/java/cbe/fetching/Aggregates.java
mrg
On Mon, May 1, 2017 at 3:55 AM, Andrus Adamchik <an...@objectstyle.org>
wrote:
> SQLTemplate it is then.
>
> > On Apr 30, 2017, at 9:02 PM, Amedeo Mantica <am...@me.com>
> wrote:
> >
> > Cool.
> > However I'm using the 3.1.2 yet
> > Amedeo
> >
> >> On 30 Apr 2017, at 10:21, Andrus Adamchik <an...@objectstyle.org>
> wrote:
> >>
> >>> SQLTemplate query = new SQLTemplate(MyEntity.class, "SELECT COUNT(1)
> >>> FROM MY_ENTITY");
> >>> query.setFetchingDataRows(true);
> >>> List<DataRow> rows = (List<DataRow>) context.performQuery(query);
> >>
> >> Or you can use SQLSelect as a type-safe and more user-friendly flavor
> doing the same thing:
> >>
> >> List<DataRow> rows = SQLSelect.dataRowQuery("SELECT COUNT(1) FROM
> MY_ENTITY").select(context);
> >>
> >>> You can also use aggregate functions directly with Cayenne API (since
> >>> version 4.0.M5):
> >>>
> >>> long count = ObjectSelect.query(MyEntity.class).selectCount(context);
> >>
> >> Yep, this one is the best option.
> >>
> >> Andrus
> >>
> >>
> >>> On Apr 29, 2017, at 5:22 PM, Nikita Timofeev <
> ntimofeev@objectstyle.com> wrote:
> >>>
> >>> Hi Amedeo,
> >>>
> >>> For raw queries you can use SQLTemplate, like this:
> >>>
> >>> SQLTemplate query = new SQLTemplate(MyEntity.class, "SELECT COUNT(1)
> >>> FROM MY_ENTITY");
> >>> query.setFetchingDataRows(true);
> >>> List<DataRow> rows = (List<DataRow>) context.performQuery(query);
> >>>
> >>> You can also use aggregate functions directly with Cayenne API (since
> >>> version 4.0.M5):
> >>>
> >>> long count = ObjectSelect.query(MyEntity.class).selectCount(context);
> >>>
> >>> Hope this helps!
> >>>
> >>> On Sat, Apr 29, 2017 at 4:49 PM, Amedeo Mantica <am...@me.com>
> wrote:
> >>>> Hi all,
> >>>>
> >>>> Ho to execute a simple raw query with cayenne ?
> >>>>
> >>>> let say: SELECT COUNT(1) FROM MY_ENTITY;
> >>>>
> >>>> Thank you
> >>>> Amedeo
> >>>
> >>>
> >>>
> >>> --
> >>> Best regards,
> >>> Nikita Timofeev
> >>
> >
>
>
Re: Raw query
Posted by Andrus Adamchik <an...@objectstyle.org>.
SQLTemplate it is then.
> On Apr 30, 2017, at 9:02 PM, Amedeo Mantica <am...@me.com> wrote:
>
> Cool.
> However I'm using the 3.1.2 yet
> Amedeo
>
>> On 30 Apr 2017, at 10:21, Andrus Adamchik <an...@objectstyle.org> wrote:
>>
>>> SQLTemplate query = new SQLTemplate(MyEntity.class, "SELECT COUNT(1)
>>> FROM MY_ENTITY");
>>> query.setFetchingDataRows(true);
>>> List<DataRow> rows = (List<DataRow>) context.performQuery(query);
>>
>> Or you can use SQLSelect as a type-safe and more user-friendly flavor doing the same thing:
>>
>> List<DataRow> rows = SQLSelect.dataRowQuery("SELECT COUNT(1) FROM MY_ENTITY").select(context);
>>
>>> You can also use aggregate functions directly with Cayenne API (since
>>> version 4.0.M5):
>>>
>>> long count = ObjectSelect.query(MyEntity.class).selectCount(context);
>>
>> Yep, this one is the best option.
>>
>> Andrus
>>
>>
>>> On Apr 29, 2017, at 5:22 PM, Nikita Timofeev <nt...@objectstyle.com> wrote:
>>>
>>> Hi Amedeo,
>>>
>>> For raw queries you can use SQLTemplate, like this:
>>>
>>> SQLTemplate query = new SQLTemplate(MyEntity.class, "SELECT COUNT(1)
>>> FROM MY_ENTITY");
>>> query.setFetchingDataRows(true);
>>> List<DataRow> rows = (List<DataRow>) context.performQuery(query);
>>>
>>> You can also use aggregate functions directly with Cayenne API (since
>>> version 4.0.M5):
>>>
>>> long count = ObjectSelect.query(MyEntity.class).selectCount(context);
>>>
>>> Hope this helps!
>>>
>>> On Sat, Apr 29, 2017 at 4:49 PM, Amedeo Mantica <am...@me.com> wrote:
>>>> Hi all,
>>>>
>>>> Ho to execute a simple raw query with cayenne ?
>>>>
>>>> let say: SELECT COUNT(1) FROM MY_ENTITY;
>>>>
>>>> Thank you
>>>> Amedeo
>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Nikita Timofeev
>>
>
Re: Raw query
Posted by Amedeo Mantica <am...@me.com>.
Cool.
However I'm using the 3.1.2 yet
Amedeo
> On 30 Apr 2017, at 10:21, Andrus Adamchik <an...@objectstyle.org> wrote:
>
>> SQLTemplate query = new SQLTemplate(MyEntity.class, "SELECT COUNT(1)
>> FROM MY_ENTITY");
>> query.setFetchingDataRows(true);
>> List<DataRow> rows = (List<DataRow>) context.performQuery(query);
>
> Or you can use SQLSelect as a type-safe and more user-friendly flavor doing the same thing:
>
> List<DataRow> rows = SQLSelect.dataRowQuery("SELECT COUNT(1) FROM MY_ENTITY").select(context);
>
>> You can also use aggregate functions directly with Cayenne API (since
>> version 4.0.M5):
>>
>> long count = ObjectSelect.query(MyEntity.class).selectCount(context);
>
> Yep, this one is the best option.
>
> Andrus
>
>
>> On Apr 29, 2017, at 5:22 PM, Nikita Timofeev <nt...@objectstyle.com> wrote:
>>
>> Hi Amedeo,
>>
>> For raw queries you can use SQLTemplate, like this:
>>
>> SQLTemplate query = new SQLTemplate(MyEntity.class, "SELECT COUNT(1)
>> FROM MY_ENTITY");
>> query.setFetchingDataRows(true);
>> List<DataRow> rows = (List<DataRow>) context.performQuery(query);
>>
>> You can also use aggregate functions directly with Cayenne API (since
>> version 4.0.M5):
>>
>> long count = ObjectSelect.query(MyEntity.class).selectCount(context);
>>
>> Hope this helps!
>>
>> On Sat, Apr 29, 2017 at 4:49 PM, Amedeo Mantica <am...@me.com> wrote:
>>> Hi all,
>>>
>>> Ho to execute a simple raw query with cayenne ?
>>>
>>> let say: SELECT COUNT(1) FROM MY_ENTITY;
>>>
>>> Thank you
>>> Amedeo
>>
>>
>>
>> --
>> Best regards,
>> Nikita Timofeev
>
Re: Raw query
Posted by Andrus Adamchik <an...@objectstyle.org>.
> SQLTemplate query = new SQLTemplate(MyEntity.class, "SELECT COUNT(1)
> FROM MY_ENTITY");
> query.setFetchingDataRows(true);
> List<DataRow> rows = (List<DataRow>) context.performQuery(query);
Or you can use SQLSelect as a type-safe and more user-friendly flavor doing the same thing:
List<DataRow> rows = SQLSelect.dataRowQuery("SELECT COUNT(1) FROM MY_ENTITY").select(context);
> You can also use aggregate functions directly with Cayenne API (since
> version 4.0.M5):
>
> long count = ObjectSelect.query(MyEntity.class).selectCount(context);
Yep, this one is the best option.
Andrus
> On Apr 29, 2017, at 5:22 PM, Nikita Timofeev <nt...@objectstyle.com> wrote:
>
> Hi Amedeo,
>
> For raw queries you can use SQLTemplate, like this:
>
> SQLTemplate query = new SQLTemplate(MyEntity.class, "SELECT COUNT(1)
> FROM MY_ENTITY");
> query.setFetchingDataRows(true);
> List<DataRow> rows = (List<DataRow>) context.performQuery(query);
>
> You can also use aggregate functions directly with Cayenne API (since
> version 4.0.M5):
>
> long count = ObjectSelect.query(MyEntity.class).selectCount(context);
>
> Hope this helps!
>
> On Sat, Apr 29, 2017 at 4:49 PM, Amedeo Mantica <am...@me.com> wrote:
>> Hi all,
>>
>> Ho to execute a simple raw query with cayenne ?
>>
>> let say: SELECT COUNT(1) FROM MY_ENTITY;
>>
>> Thank you
>> Amedeo
>
>
>
> --
> Best regards,
> Nikita Timofeev
Re: Raw query
Posted by Nikita Timofeev <nt...@objectstyle.com>.
Hi Amedeo,
For raw queries you can use SQLTemplate, like this:
SQLTemplate query = new SQLTemplate(MyEntity.class, "SELECT COUNT(1)
FROM MY_ENTITY");
query.setFetchingDataRows(true);
List<DataRow> rows = (List<DataRow>) context.performQuery(query);
You can also use aggregate functions directly with Cayenne API (since
version 4.0.M5):
long count = ObjectSelect.query(MyEntity.class).selectCount(context);
Hope this helps!
On Sat, Apr 29, 2017 at 4:49 PM, Amedeo Mantica <am...@me.com> wrote:
> Hi all,
>
> Ho to execute a simple raw query with cayenne ?
>
> let say: SELECT COUNT(1) FROM MY_ENTITY;
>
> Thank you
> Amedeo
--
Best regards,
Nikita Timofeev