← Back to team overview

dhis2-devs team mailing list archive

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