在对象

时间:2016-05-02 08:01:56

标签: java hibernate thymeleaf

我在关系Product.javaAdminUser.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"), inverseJoinColumns=@JoinColumn(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"), inverseJoinColumns=@JoinColumn(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 nameskucodesellername,我们正在使用thymleaf,因此,使用th:object我们得到product对象,并在产品对象的帮助下能够获得产品详细信息,但问题是,当我试图获取adminuser对象中的卖家名称时,我得到一个例外说

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.id对象中product

productsku之间存在关联,因此当我致电defaultSku.id时,我成功skuid但是当我打电话给adminUser.name时,关系中的异常有什么不对吗?为什么我得到那个例外?谁能帮我解决怎么办?

1 个答案:

答案 0 :(得分:0)

最后我找到了上述问题的解决方案

<强>问题

当我致电seller: <span th:text=*{adminUser.name}时 实际上我在adminUser对象中获取List对象而没有循环它我试图访问管理员用户的名称因此它抛出异常

<强>溶液

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