dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #33948
Re: [Bug 1389912] [NEW] (Web-API) Using filter=name:like:* fails for certain objects
Yes, I will look into this. The problem is that (as you say) quite a few
objects don’t have a persisted name property, but at the same time we do
a special db optimisation for name:like:abc and this fails when the
object doesn’t not have this property.
This can be solved by doing
getSchema().getProperty(“name”).isPersisted() in 2.17, I will look into
it
--
Morten
From: Halvdan Hoem Grelland <halvdanhg@xxxxxxxxx>
Reply: Bug 1389912 <1389912@xxxxxxxxxxxxxxxxxx>>
Date: 6 Nov 2014 at 06:15:46
To: mortenoh@xxxxxxxxx <mortenoh@xxxxxxxxx>>
Subject: [Bug 1389912] [NEW] (Web-API) Using filter=name:like:* fails for certain objects
Public bug reported:
When using a filter query parameter with value 'name:like:<anything>',
HTTP 500 internal server error is thrown for certain (types of) objects.
Only happens for name:like, other property:operator combos behave as
expected.
More specifically, if the object which is being filtered does not have a
'name' parameter in its DB model (Hibernate mapping, table), a HTTP 500
is returned. This is true for several DHIS2 objects, including
messageconversations and interpretations.
Test case:
----------------------------------------
Run:
curl -u admin:district -v "https://apps.dhis2.org/dev/api/interpretations?filter=name:like:test"
Returns:
....
org.hibernate.QueryException: could not resolve property: name of: org.hisp.dhis.interpretation.Interpretation
...
Should return:
Empty json object (no matches)
----------------------------------------
Caused by special case implementation for filter=name:like:* in
AbstractCrudController.getObjectList()
Suggestions:
Could be fixed by somehow checking in the aforementioned special case for the existence of a 'name' property. Unfortunately this is not trivial as property must be defined in the actual Hibernate model (filtering executed in query, I assume?).
Could also be fixed by defining the name property in the mapping (might not be a great idea, depending on the case).
** Affects: dhis2
Importance: Undecided
Status: New
** Tags: filter web-api
** Description changed:
When using a filter query parameter with value 'name:like:<anything>',
HTTP 500 internal server error is thrown for certain (types of) objects.
Only happens for name:like, other property:operator combos behave as
expected.
More specifically, if the object which is being filtered does not have a
'name' parameter in its DB model (Hibernate mapping, table), a HTTP 500
is returned. This is true for several DHIS2 objects, including
messageconversations and interpretations.
Test case:
----------------------------------------
Run:
curl -u admin:district -v "https://apps.dhis2.org/dev/api/interpretations?filter=name:like:test"
- Returns:
- ....
- org.hibernate.QueryException: could not resolve property: name of: org.hisp.dhis.interpretation.Interpretation
+ Returns:
+ ....
+ org.hibernate.QueryException: could not resolve property: name of: org.hisp.dhis.interpretation.Interpretation
...
Should return:
Empty json object (no matches)
----------------------------------------
Caused by special case implementation for filter=name:like:* in
AbstractCrudController.getObjectList()
Suggestions:
- Could be fixed by somehow checking in the aforementioned special case for the existence of a 'name' property. Sadly this is not trivial as property must be defined in the actual Hibernate model (filtering executed in query, I assume?).
+ Could be fixed by somehow checking in the aforementioned special case for the existence of a 'name' property. Unfortunately this is not trivial as property must be defined in the actual Hibernate model (filtering executed in query, I assume?).
Could also be fixed by defining the name property in the mapping (might not be a great idea, depending on the case).
--
You received this bug notification because you are subscribed to DHIS.
https://bugs.launchpad.net/bugs/1389912
Title:
(Web-API) Using filter=name:like:* fails for certain objects
Status in DHIS 2:
New
Bug description:
When using a filter query parameter with value 'name:like:<anything>',
HTTP 500 internal server error is thrown for certain (types of)
objects. Only happens for name:like, other property:operator combos
behave as expected.
More specifically, if the object which is being filtered does not have
a 'name' parameter in its DB model (Hibernate mapping, table), a HTTP
500 is returned. This is true for several DHIS2 objects, including
messageconversations and interpretations.
Test case:
----------------------------------------
Run:
curl -u admin:district -v "https://apps.dhis2.org/dev/api/interpretations?filter=name:like:test"
Returns:
....
org.hibernate.QueryException: could not resolve property: name of: org.hisp.dhis.interpretation.Interpretation
...
Should return:
Empty json object (no matches)
----------------------------------------
Caused by special case implementation for filter=name:like:* in
AbstractCrudController.getObjectList()
Suggestions:
Could be fixed by somehow checking in the aforementioned special case for the existence of a 'name' property. Unfortunately this is not trivial as property must be defined in the actual Hibernate model (filtering executed in query, I assume?).
Could also be fixed by defining the name property in the mapping (might not be a great idea, depending on the case).
To manage notifications about this bug go to:
https://bugs.launchpad.net/dhis2/+bug/1389912/+subscriptions
--
You received this bug notification because you are a member of DHIS 2
developers, which is subscribed to DHIS.
https://bugs.launchpad.net/bugs/1389912
Title:
(Web-API) Using filter=name:like:* fails for certain objects
Status in DHIS 2:
New
Bug description:
When using a filter query parameter with value 'name:like:<anything>',
HTTP 500 internal server error is thrown for certain (types of)
objects. Only happens for name:like, other property:operator combos
behave as expected.
More specifically, if the object which is being filtered does not have
a 'name' parameter in its DB model (Hibernate mapping, table), a HTTP
500 is returned. This is true for several DHIS2 objects, including
messageconversations and interpretations.
Test case:
----------------------------------------
Run:
curl -u admin:district -v "https://apps.dhis2.org/dev/api/interpretations?filter=name:like:test"
Returns:
....
org.hibernate.QueryException: could not resolve property: name of: org.hisp.dhis.interpretation.Interpretation
...
Should return:
Empty json object (no matches)
----------------------------------------
Caused by special case implementation for filter=name:like:* in
AbstractCrudController.getObjectList()
Suggestions:
Could be fixed by somehow checking in the aforementioned special case for the existence of a 'name' property. Unfortunately this is not trivial as property must be defined in the actual Hibernate model (filtering executed in query, I assume?).
Could also be fixed by defining the name property in the mapping (might not be a great idea, depending on the case).
To manage notifications about this bug go to:
https://bugs.launchpad.net/dhis2/+bug/1389912/+subscriptions
References