How to load an entity by a key other than primary key?

Posted by stacker on Stack Overflow See other posts from Stack Overflow or by stacker
Published on 2010-06-10T11:53:20Z Indexed on 2010/06/10 12:03 UTC
Read the original article Hit count: 148

Filed under:
|
|
|

In a customized servlet (seam 2.1.2) this works fine

TableNameHome tableNameHome = (TableNameHome) Component.getInstance( "tableNameHome " );
tableName entity = tableNameHome.getInstance();
entity.setXXX();
tableNameHome.persit(); 

However this one fails:

entityManager = tableNameHome .getEntityManager();
Query query = entityManager.createQuery( "SELECT b FROM tablename b WHERE b.box_id = :key2nd" );
query.setParameter( "key2nd", value);
List results = query.getResultList();

and leads to this error message:

    org.hibernate.hql.ast.QuerySyntaxException: tablename is not mapped
   [SELECT b FROM tablename  b WHERE b.key2nd = :key2nd]

In EJB 2.1 I could implement other finder-methods. EntityHome.find() searches only by primary key.

What do I need to do in order to query by a different criteria than primary key?

© Stack Overflow or respective owner

Related posts about java

Related posts about jpa