JPA: How to get entity based on field value other than ID?
hibernate, java, jpa
Solution
It is not a "problem" as you stated it.
Hibernate has the built-in `find()`, but you have to build your own query in order to get a particular object. I recommend using Hibernate's `Criteria` :
Criteria criteria = session.createCriteria(YourClass.class);
YourObject yourObject = criteria.add(Restrictions.eq("yourField", yourFieldValue))
.uniqueResult();
This will create a `criteria` on your current class, adding the restriction that the column "yourField" is equal to the value `yourFieldValue`. `uniqueResult()` tells it to bring a unique result. If more objects match, you should retrive a list.
List<YourObject> list = criteria.add(Restrictions.eq("yourField", yourFieldValue)).list();
If you have any further questions, please feel free to ask. Hope this helps.
Problem
In JPA (Hibernate), when we automatically generate the ID field, it is assumed that the user has no knowledge about this key. So, when obtaining the entity, user would query based on some field other than ID. How do we obtain the entity in that case (since `em.find()` cannot be used). I understand we can use a query and filter the results later. But, is there a more direct way (because this is a very common problem as I understand).