我试图编写一个使用hibernate写入数据库的应用程序,但是在某些操作中,我必须对HB制作的表中的数据使用JDBC。
JDBS 需要赋予管理员创建 SQL 查询的能力,该查询将返回有关数据库中数据的统计信息,例如指定类型的已处理文档的数量、成功/失败的登录尝试次数或订单中产品的总值。
为此,我已经完成了一个允许创建覆盖 toString() 并返回漂亮的 sql 查询字符串的类。所有的作品,但现在我试图通过让管理员能够选择表/列名来让管理员生活得更轻松。这是一个问题,因为它们是由hibernate创建的。一些由@column 注释,另一些由字段名称。我如何检查字段映射?我知道这一切都与反射有关,但在 java 中还没有做太多。
例子
@Entity
@Table(name= "my_table_name" )
public class TableOFSomething implements Serializable{
//This field isn't mapped into database and info about it is not requred.
//In fact, info about it may cause an error.
private static final long serialVersionUID = 7L;
@Id
@Column(name="id")
private String id;
private String fieldOne;
@Column(name="field_two")
private String fieldTwo;
@Column(name="renamed_just_for_fun")
private int Number;
//code with getters & setters
}
如何编写具有类似定义的方法
public <T> String tableName(Class<T> Target); //returns name of table in database
public <T> ArrayList<String> tabelFields(Class<T> Target); //returns name of fields in database