rocking
rocking

Reputation: 4899

How to handle jpa entity

I have a table client and from retrieving results I use this way

public ClientParent getClient(Long clientId,Long parentId){
        String queryString="SELECT cp FROM Client cp where cp.cid.id=:clientId " +
                "and cp.pid.id=:parentId  ";        
        Query query=entityManagerUtil.getQuery(queryString);
        query.setParameter("clientId", clientId);   
        query.setParameter("parentId", parentId);
        return (ClientParent)query.getSingleResult();
    }

This is the DAO method.

Actually for getting client at 1st control goes to controller class then to service and then DAO class

Now lets say that the client table is empty so in this case return (ClientParent)query.getSingleResult(); will throw me error.

I can handle this in by wrting in try catch block in service class as well as in controller class.But wanted to know if I can do with out throwing any exception.I mean do I have change the query or what should I return so that it will never throw exception even if the table is empty

Upvotes: 0

Views: 72

Answers (2)

pms
pms

Reputation: 944

I suggest you to surround your code with try-catch block. So will sure that the data is correct.

try {
   // ... your code goes here
   // getSingleResult()
   return XXX;
} catch(NonUniqueResultException e) {
    // here you know there is some bad data 
    // so you can ignore it or do something 
} catch(NoResultException e){ 
    return null;
}

Upvotes: 0

Jens
Jens

Reputation: 69440

you can use the getResultList() method

public ClientParent getClient(Long clientId,Long parentId){
        String queryString="SELECT cp FROM Client cp where cp.cid.id=:clientId " +
                "and cp.pid.id=:parentId  ";        
        Query query=entityManagerUtil.getQuery(queryString);
        query.setParameter("clientId", clientId);   
        query.setParameter("parentId", parentId);
        List<ClientParent> result = query.getResultList();
        if (result != null && result.size() >0){
            return result.get(0);
        } else {
            return null;
       }
    }

Upvotes: 2

Related Questions