【发布时间】:2015-08-13 06:15:26
【问题描述】:
我一直在寻找这个,但我找不到正确的答案。
我正在尝试根据实体的列名从实体中获取任何字段。
就像一个通用的 get,它接收一个 String columnName 并返回一个 Object field,它表示 Hibernate 由该 columnName 映射的 Class 字段。
例如
@Table(name="ENTITY_EXAMPLE")
public class EntityExample{
@Column(name="COL_NAME")
private String name;
@Column(name="COL_SURNAME")
private String surname;
public EntityExample(String name, String surname){
this.name=name;
this.surname=surname;
}
//getters and setters
public Object getField(String columnName){
Object field=//some way to map the columnName with the field;
return field;
}
}
public main(String[] args){
EntityExample example=new EntityExample("John", "Doe");
String exampleName=(String) example.getField("COL_NAME");
String exampleSurname=(String) example.getField("COL_SURNAME");
System.out.println("NAME: "+ exampleName+ ", SURNAME: "+exampleSurname);
}
并且应该在运行时打印主要内容:
NAME: John, SURNAME: Doe
我现在正在做的方式是使用 ifs 检查参数是否等于每个带注释的列,如果相等则在内部返回字段,但它应该是一种正确的方法。
我现在的做法:
public Object getField(String columnName){
if(columnName.equals("COL_NAME")){
return name;
}
if(columnName.equals("COL_SURNAME")){
return surname;
}
}
提前致谢。
【问题讨论】: