0

晨叠成员,

你能帮我解决这个问题吗?

我试图从一个对象中读取一个持久集属性,但它只返回一行,并且我在数据库表中插入了两个用于此类 ID 的行

  • 如何在 dataTable 中加载所有行?
  • 如何将 LinkHashSet 表中加载的所有字段读取为 id、名称、描述等...

豆 :

@Inject
private Pessoa pessoa;

实体佩索阿:

@Entity
@Table(name = "pessoa",uniqueConstraints = {@UniqueConstraint(columnNames = { "idt_pessoa" }) })
@Inheritance(strategy = InheritanceType.JOINED)
@OneToMany
@JoinColumn(name = "idt_pessoa")
private Set<ContatoPessoa> contatoPessoas = new LinkedHashSet<ContatoPessoa>();

public Set<ContatoPessoa> getContatoPessoas() {
    return contatoPessoas;
}

public void setContatoPessoas(Set<ContatoPessoa> contatoPessoas) {
    this.contatoPessoas = contatoPessoas;
}

ContatoPessoa 实体:

@Entity
@Table(name="contato_pessoa")
public class ContatoPessoa implements Entidade{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "idt_contatoPessoa")
private Long id;

@Column(length=100)
private String des_areaContatoPessoa;

@Column(length=100)
private String des_emailContatoPessoa;

在 xhtml 中:

<p:dataTable id="dTContato" var="contatoPessoas"
value="#{pessoaMB.pessoa.contatoPessoas}"
rowKey="#{pessoa.contatoPessoas.id}">
<p:column headerText="#{bundle.pessoa_lblid}">
<p:outputLabel value="#{contatoPessoas.key}"/>
</p:column>

我在 xhtml 中尝试过不同的组合,p:outputLabel但完全没有成功

我从一个对象观察了持久集pessoa,它具有值。包是一个ArrayList

我没有发布图片的声誉。对不起

4

2 回答 2

2

好的,现在我知道发生了什么……您不能在数据表中使用 Set。你必须使用一些有序的集合。有关详细信息,请参阅此问题....我建议创建一个新方法

public List<ContatoPessoa> getContatoPessoasList() {
    return new ArrayList<ContatoPessoa>(contatoPessoas);
}

并将您的绑定更改为:value="#{pessoaMB.pessoa.contatoPessoasList}"

于 2013-06-19T14:54:53.800 回答
0

对我来说,您似乎在 outputLabel 中使用了错误的 var 变量。在您的表中,您已经定义了var="car". 所以而不是:

<p:outputLabel value="#{pessoa.contatoPessoas.id}"/>

您应该通过此car变量访问您的值,例如:

<p:outputLabel value="#{car.id}"/>

更新

您的rowKey属性也似乎错误,请像这样更改:

rowKey="#{contatoPessoas.id}"

更新

正如@Ammar 上面提到的那样,在 2.2 版之前的 JSF 中不支持 set 也存在问题。所以另一个解决方案是升级到JSF 2.2

于 2013-06-19T12:17:30.583 回答