2011-11-13 163 views
2

我的問題是,我想使用Hibernate將類對象java.lang.reflect.Field保存到數據庫中。 例如表:從具有對象「字段」的專用字段獲取值。 JAVA

@Entity 
public class Actor implements Serializable { 
    @Id 
    @GeneratedValue 
    private Long id; 
    private String name; 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getName() { 
     return name; 
    } 

    private void setId(Long id) { 
     this.id = id; 
    } 

    public Long getId() { 
     return id; 
    } 
} 

和我有表的條件,我想通過字符串存儲java.lang.reflect.Field中的對象:

@Entity 
public class Conditions implements Serializable { 

    @Id 
    @GeneratedValue 
    private Long id; 
    private String value; 
    private String field; 
    private int type; 

    public void setField(String field) { 
     this.field = field; 
    } 

    public void setType(int type) { 
     this.type = type; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 

    public String getField() { 
     return field; 
    } 

    public int getType() { 
     return type; 
    } 

    public String getValue() { 
     return value; 
    } 

    private void setId(Long id) { 
     this.id = id; 
    } 

    public Long getId() { 
     return id; 
    } 
} 

,現在我會做這樣的事情:

Conditions con; 
// con = get our condition from database (via hibernate) 
java.lang.reflect.Field f = Actor.class.getDeclaredField(con.getField()); 
Actor a = new Actor(); 
a.setName("My name"); 
String ActorName = f.get(a); 

這裏是我的問題,現在我有例外,如:

java.lang.IllegalAccessException: Class testsms.TestSms can not access a member of class tables.Actor with modifiers "private" 

可能我需要使用Actor.class.getDeclaredMethods(),但我不知道如何。任何人都可以幫我解決這個問題嗎?

回答

5

你可以試試f.setAccessible(true)然後重新運行你的代碼?

+0

它的工作原理,感謝您的快速回復:) –

+1

@skorek:你應該接受一個答案,如果它幫助你。 –

+0

我很高興你得到它workin :) – mprabhat

相關問題