Generic DAO Pattern with SMPC
egoosen Jan 10, 2009 11:53 AMHi,
I'm trying to implement the Generic DAO Pattern in my Seam application, but its not working.
I'm getting a ClassCastException in BaseJPADAO constructor:
public abstract class BaseJPADAO<T extends BaseEntity, PK extends Serializable> implements BaseDAO<T, PK> { @In EntityManager entityManager; private Class<T> type = null; public BaseJPADAO() { this.type = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; }
@Name("tblUserDAO") @AutoCreate public class TblUserJPADAO extends BaseJPADAO<TblUser, Integer> implements TblUserDAO { public TblUser findTblUserByUsernamePassword(String username, String password) { Map<String,String> parameters = new HashMap<String,String>(); parameters.put("username",username); parameters.put("password",password); return findRecordByName("findTblUserByUsernamePassword", parameters); } }
@Name("authenticator") public class Authenticator { @Logger Log log; @In Identity identity; @In Credentials credentials; @In TblUserJPADAO tblUserDAO; @Out(required=false, scope=ScopeType.SESSION) TblUser currentUser; public boolean authenticate() { log.info("authenticating {0}", credentials.getUsername()); try { currentUser = tblUserDAO.findTblUserByUsernamePassword( credentials.getUsername(), credentials.getPassword()); identity.addRole(currentUser.getAuthGroup().getGroupName()); return true; } catch (NoResultException ex) { FacesMessages.instance().add("Invalid username/password"); return false; } } }
I've come across other users who are also experiencing similar issues while trying to implement the Generic DAO Pattern in Seam:
Has anyone managed to get this working in Seam?
jboss-seam-2.1.0.CR1
jboss-4.2.3.GA
apache-tomcat-6.0.14