2010-08-10 4 views
2

에서 복합 키는 내가대상 연결할 액세스 내 JSF 내부 JSF

<h:outputLabel value="Group:" for="group" /> 
<h:inputText id="group" value="#{newUserController.group.groupKey.groupId}" title="Group Id" /> 

Group.java

@Entity 
public class Group { 

    @EmbeddedId 
    private GroupKey groupKey; 

    @ManyToOne 
    @JoinColumn(name="userId") 
    private User user; 
    //setter, getter, constructors, equals and hashes 
} 

GroupKey.java을했을 때

@Embeddable 
public class GroupKey { 

    @Column(name="userId", insertable=false, updatable=false) 
    private String userId; 

    private String groupId; 
    //setter, getter, constructors, equals and hashes 
} 

그래서 개체를 유지하려고 할 때, 그것을 이 오류를 줘

value="#{newUserController.group.groupKey.groupId}": Target Unreachable, 'null' returned null 

편집 여기
내 관리 빈의 내용이다.

@ManagedBean(name="newUserController") 
@RequestScoped 
public class NewUserController { 

    private User user = new User(); 

    private Group group = new Group();  

    @EJB 
    DocumentSBean sBean; 

    public void createNewUser(){ 
     user.addGroup(group); 
     sBean.persist(user); 
    } 
} 

답변

2

어느 #{newUserController.group} 또는 #{newUserController.group.groupKey}null를 반환했습니다. JSF는 마지막으로 속성 (이 경우 groupId) 만 설정합니다. 템플리트 엔터티 인 경우 group 및/또는 groupKey에 대한 기본값 및 null이 아닌 값을 제공하거나 미리 설정해야합니다. 예를 들어 빈의 (포스트) 생성자에서이를 수행 할 수 있습니다. 이것이 기존 엔티티 인 경우 이러한 등록 정보가 JPA에 의해 적절히 채워 졌는지 확인해야합니다.

2

나는 그룹 클래스에

@PostConstruct 
    public void init(){ 
    groupKey=new GroupKey(); 
} 

을 추가하여 그것을 해결, 그것은 초기화됩니다 그것은 null을 반환하지 않습니다.

1

PostConstruct가 나에게 적합하지 않았습니다 (하지만 저는 초보자이기 때문에 가치가있는 부분에 대해 생각했습니다). 그러나이를 엔티티 클래스 생성자에 추가하면됩니다.

public Group() { 
    this.groupKey=new GroupKey(); 
}