2012-10-17 2 views
1

저는 seam 2.1.2 보안을 사용하고 있고 jsf richfaces GUI에 의해 identitymanager를 사용하여 역할을 만듭니다. 생성 과정에서 데이터베이스에 생성 된 역할에 "설명"을 추가하고 역할 생성은 괜찮지 만 설명 필드가 추가되지 않아 데이터베이스에 저장된 설명 필드를 볼 수있는 역할 (GUI에 의한 다른 작업)을 업데이트해야합니다 . 질문은 창조 작업에서 제기 된 "설명"을 저장하기 위해 무엇을해야합니까?identitymanager 역할 생성 후 역할 필드가 데이터베이스에 저장되지 않음

public boolean createRole(Role role) { 
    IdentityManager identityManager = IdentityManager.instance(); 
logger.info("creating role:" + role.getRoleName()); 
if (identityManager.roleExists(role.getRoleName())) { 
    return false; 
} 
if (identityManager.createRole(role.getRoleName())) { 
    completeRolePersistence(role); 
    return true; 
} 
return false; 
} 

과 completeRolePersistence 방법 :

public void completeRolePersistence(Role role) { 
    logger.info("setting additional info to role..."); 
    Query query = em.createNamedQuery("UPDT_ADDITIONALS"); 
    query.setParameter("name", role.getRoleName()) 
      .setParameter("description", role.getDescription()) 
      .setParameter("level", role.getRoleLevel()); 
    int updated = query.executeUpdate(); 
    logger.info("roles updated with desc : " + updated); 
} 

내가 로그

roles updated with desc : 0 

답변

0

이유에 인쇄, 쿼리가 실행되지 않는 것처럼 보일

울부 짖는 소리는 내 코드입니다 업데이트 쿼리가 실행 중이므로 코드가 작동하지 않습니다. BEFORE 역할은 실제로 데이터베이스에 삽입되므로 아무 것도 업데이트하지 않습니다.

제 조언은 IdentityManager에서 역할/사용자 생성 방법을 사용하지 않는 것입니다. 너는 IdentityManager보다 너의 역할과 사용자를 만들거나 편집하기 위해 홈 구성 요소를 만드는 것이 낫다.

그러나 이것을 수행하려면 JpaIdentityStore을 덮어 쓰고 createRole 메서드를 사용자 정의하고 필요에 따라 엔티티를 채워야합니다.

+0

완벽하게 작동합니다. entitymanager에서 juste persist 메서드를 사용하고 db에 모든 fileds 및 사용 권한이있는 역할을 저장합니다. – abk

관련 문제