从具有对象“字段”的专用字段获取值。 JAVA

问题描述:

我的问题是,我想使用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(),但我不知道如何。任何人都可以帮我解决这个问题吗?

你可以试试f.setAccessible(true)然后重新运行你的代码?

+0

它的工作原理,感谢您的快速回复:) –

+1

@skorek:你应该接受一个答案,如果它帮助你。 –

+0

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