2016-05-02 3 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; 
     } 
    } 

В странице продукта I необходимо показать детали продукта, такие как product name, skucode, sellername, мы используем 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 объекта есть связь между product и sku, поэтому когда я звоню defaultSku.id, я получаю skuid успешно, но когда я звоню adminUser.name получаю исключение, что-то неправильно в отношении? почему я получаю это исключение? может ли кто-нибудь помочь мне, как решить?

+0

Это действительно дует мой разум. –

+0

Вам не нужен метод setter для свойства имени пользователя Admin. Попробуйте напечатать имя пользователя admin в 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}

Смежные вопросы