gpt4 book ai didi

java - 从 JSF 访问复合键时无法访问目标

转载 作者:行者123 更新时间:2023-11-30 06:37:29 25 4
gpt4 key购买 nike

在我的 JSF 中我做了

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

组.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

编辑
这是我的托管 Bean 的内容。

@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);
}
}

最佳答案

#{newUserController.group}#{newUserController.group.groupKey} 返回 null。 JSF 只会设置 last 属性(在本例中为 groupId)。如果这是一个模板实体,您需要为 group 和/或 groupKey 提供/预设一个默认的非空值。例如,您可以在 bean 的(后)构造函数中执行此操作。如果这是一个现有实体,您需要确保这些属性已由 JPA 正确预填充。

关于java - 从 JSF 访问复合键时无法访问目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3454324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com