2015-07-20 106 views
3

我尝试从关联ManyToMany中恢复数据,但我不能,这是我的代码。javax.el.PropertyNotFoundException:在类型org.hibernate.collection.internal.PersistentSet上找不到属性

实体Produit:

@Entity 
public class Produit implements Serializable { 

@Id 
@Column(name="Produit_ID") 
@GeneratedValue 
private Long id; 
private String dq; 
private String icForme; 
private String ich; 
private String icht; 

@ManyToMany(cascade = {CascadeType.ALL}) 
@JoinTable(name="produit_terminal", 
       joinColumns={@JoinColumn(name="Produit_ID")}, 
       inverseJoinColumns={@JoinColumn(name="Terminal_ID")}) 
    private Set<Terminal> terminals = new HashSet<Terminal>(); 

//getter setter 

实体终端:

@Entity 
public class Terminal implements Serializable{ 

@Id 
@GeneratedValue 
@Column(name="Terminal_ID") 
private Long id; 
private String crimpkontakt; 
private String equipment; 
private String geometrie; 
private String dcbt; 
private String icb; 
private String ak; 

@ManyToMany(mappedBy="terminals") 
private Set<Produit> produit = new HashSet<Produit>(); 

//getter setter 

类别:ModuleJPADao

public List<Produit> parProduit(String cat){ 
    cat = "%" + cat + "%"; 
    Query query = getEntityManger().createQuery("from "+ getPersistentClass().getSimpleName() 
      +" u where u.produit LIKE :cat").setParameter("cat", cat); 
    List<Produit> module = (List) query.getResultList(); 
    return module; 

} 

类别:ModuleService

public List<Produit> tousModuleProduit(String produit) { 

    if(produit!= null){ 
     return moduleDao.parProduit(produit); 
    } 
    else{ 
     return null; 
    } 
} 

主flow.xml

<view-state id="accueil" view="accueil.xhtml"> 
    <on-render> 
     <evaluate expression="moduleService.tousModuleProduit(module.getProduit())" 
      result="viewScope.recherche" /> 

    </on-render> 
</view-state> 

file.xhtml

<p:accordionPanel value="#{recherche}" var="car"> 

        <p:tab title="IcForme : #{car.icForme}"> 

         <h:panelGrid columns="4" cellspacing="20"> 

          <p:outputLabel value="ICHT: " /> 
          <p:inputText value="#{car.icht}" /> 

          <p:outputLabel value="terminals : " /> 
          <h:form> 
           <h:dataTable value="#{car.terminals}" var="der" > 
            <p:column> 
             <h:outputText value="#{der.geometrie}" /> 
            </p:column> 

           </h:dataTable> 
          </h:form> 


         </h:panelGrid> 
     .... 

我不能得到几何学的价值;我得到这个ERREUR:

javax.el.PropertyNotFoundException: /WEB-INF/flows/main/accueil.xhtml @84,53 value="#{der.geometrie}": Property 'geometrie' not found on type org.hibernate.collection.internal.PersistentSet 
+0

哪里是你的“车”豆/吸气/ – Kukeltje

+0

你是什么意思? ? – user3693890

回答

11
<h:dataTable value="#{car.terminals}" var="der"> 
    <p:column> 
     <h:outputText value="#{der.geometrie}" /> 

javax.el.PropertyNotFoundException:房产 '几何学' 的类型没有找到org.hibernate.collection.internal.PersistentSet

因此,#{car.terminals}Set<E><h:dataTable>,<p:dataTable><ui:repeat>组件不支持对Set<E>进行迭代。 #{der}将基本上代表Set<E>本身。对于迭代Set<E>的内置支持将在未来的JSF 2.3版本中出现。

如果它不是由List<E>更换Set<E>选项,然后只得到一个数组出来的,如下:

<h:dataTable value="#{car.terminals.toArray()}" var="terminal"> 
+0

非常感谢您的回答。 – user3693890

相关问题