2013-08-03 23 views
2

我有一個多對一映射與兩個類(代碼被減少):的PropertyAccessException:無法由反射吸氣得到一個字段值

類別:

@Entity 
public class Category { 

    @Id 
    @Column(name = "CATEGORY_ID") 
    Long id; 

    @NotNull 
    String name; 

子目錄:

@Entity 
public class Subcategory { 

    @Id 
    @Column(name = "SUBCATEGORY_ID") 
    Long id; 

    @NotNull 
    @ManyToOne(targetEntity = Category.class) 
    @JoinColumn(name = "CATEGORY_ID") 
    Long categoryId; 

    @NotNull 
    String name; 

當我嘗試將子類別添加到現有類別時,我得到

ERROR [org.jboss.ejb3.invocation] JBAS014134: EJB Invocation failed on component SubcategoryController for method public void %package%.SubcategoryController.add(%package%.Subcategory): javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of %package%.Category.id 
... 
    at %package%.SubcategoryController$$$view1.add(Unknown Source) 
... 
    at %package%.SubcategoryController$Proxy$_$$_Weld$Proxy$.add(SubcategoryController$Proxy$_$$_Weld$Proxy$.java) 
    at %package%.SubcategoryService.add(SubcategoryService.java:30) 
    at %package%.SubcategoryService$Proxy$_$$_WeldClientProxy.add(SubcategoryService$Proxy$_$$_WeldClientProxy.java) 
... 
Caused by: javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of %package%.Category.id 

我該怎麼做才能糾正這個錯誤?

回答

1

在您的類別類它應該是一個一對多的註釋是這樣的:

@Entity 
public class Category {  
    @Id 
    @Column(name = "CATEGORY_ID") 
    Long id;  
    @NotNull 
    String name;   
    @OneToMany(mappedBy = "category") 
    List<Subcategory> subcategories;  
} 

你可能也想看看:
www.mkyong.com/hibernate/hibernate-one-to-many-relationship-example-annotation/

+0

我分析給出的例子,發現將'Long categoryId'改爲'Category category'就足夠了,但這並不能解決我的問題。還有什麼解決方案嗎(我不需要父母班的孩子名單)? –

+0

@OneToMany字段是可選的,如果你不使用它們,hibernate不會產生異常。 –

0

的情況下可能會出現此異常:

1)數據庫表的名稱不正確或丟失:

@Entity 
@Table(name = "category_table") // name of database table 
public class Category 

2) Field類不匹配目標類:

@ManyToOne(targetEntity = Category.class) // Target class 
@JoinColumn(name = "CATEGORY_ID") 
Category categoryId;      // Target field 

在你的情況categoryIdLong類型,Hibernate是試圖插入Category.class領域爲categoryId但可以」噸。

相關問題