2016-05-02 97 views
-1

發現我有關係Product.java兩個階級,AdminUser.java財產不能在對象

Product.java

public class ProducImpl{ 
    //one to one relation between product and sku 
    protected Sku defaultSku; 
    @ManyToMany(fetch=FetchType.Eager,targetEntity=AdminUserImpl.class,cascade=CascadeType.ALL) 
    @JoinTable(name="PRODUCT_SELLER_XREF", joinColumns = @JoinColumn(name="PRODUCT_ID",refernecedColumnName="PRODUCT_ID"), [email protected](name="ADMIN_USER_ID",refernecedColumnName="ADMIN_USER_ID") 
    public List<AdminUser> adminUser = new ArrayList<AdminUser>(); 

    public List<AdminUser> getAdminUser(){ 
     return adminUser; 
    } 
    public void setAdminUser(List<AdminUser> adminUser){ 
     this.adminUser = adminUser; 
    } 
    //getters and setter for defaultSku 
} 

AdminUser.java

public class AdminUserImpl{ 
     @Column(name="NAME",nullable="false") 
     @Index(name="ADMINUSER_NAME_INDEX",columnNames="NAME") 
     protected String name; 
      @ManyToMany(fetch=FetchType.Eager,targetEntity=ProductImpl.class,cascade=CascadeType.ALL) 
     @JoinTable(name="PRODUCT_SELLER_XREF", joinColumns = @JoinColumn(name="ADMIN_USER_ID",refernecedColumnName="ADMIN_USER_ID"), [email protected](name="PRODUCT_ID",refernecedColumnName="PRODUCT_ID") 
     public List<Product> product= new ArrayList<Product>(); 

     public List<product> getProduct(){ 
      return product; 
     } 
     public void setProduct(List<AdminUser> product){ 
      this.product= product; 
     } 
     public String getName(){ 
      return name; 
     } 
     public void setName(String name){ 
      this.name=name; 
     } 
    } 

在產品頁面我需要顯示產品詳細信息,如product name,skucode,sellername,我們使用thymleaf所以,通過使用th:object我們得到product的對象,並在產品對象的幫助下可以獲得產品詳細信息,但這裏的問題是,當我嘗試獲取賣家的名字時在adminuser對象,我在product對象得到一個異常說

org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 19): Field or property 'name' cannot be found on object of type 'org.hibernate.internal.PersistantBag'- may not public? 

Product.html

<div th:object={$product}>//loading product object 
    code : <span th:text=*{defaultSku.id}></span>//getting sku id for product 
    brand: <a th:text=*{manufacturer}//getting brand name 
    seller: <span th:text=*{adminUser.name}//failing to get seller name 
</div> 

defaultSku.idproductsku之間的關係,所以當我打電話defaultSku.id我越來越skuid成功,但是當我打電話adminUser.name變得異常什麼不對的關係?爲什麼我得到這個異常?任何人都可以幫助我如何解決?

+0

這真的吹拂我的心靈。 –

+0

您缺少管理員用戶名屬性的setter方法。嘗試在java中打印管理用戶名並檢查日誌並告訴我們你得到了什麼。 – Lucky

+0

@Lucky我有,但忘了複製粘貼... –

回答

0

終於讓我找到了我的上述問題的解決方案

問題

當我打電話seller: <span th:text=*{adminUser.name} 其實我得到adminUser對象的List對象而不環路,我想訪問的名稱admin用戶因此它是拋出異常

解決方案

seller: <span th:each="adminUsers : *{adminUser}" th:object="*{adminUsers}" th:text=*{name}