生成java内容实体
问题描述:
我有一个用hibernate 4管理的posgresql数据库,我想知道是否有办法生成来自数据库内容的java对象实体。生成java内容实体
如果我有一个Hibernate对象的测试:
Test (
int id,
String aString,
String anotherString
)
在我的表测试数据库:
ID,AString,AnotherString
1,uuuu,iiii
2,vvvv,xxxx
我在寻找产生类似结果的方法:
Test test1 = new Test(1,"uuuu","iiii");
Test test2 = new Test(2,"vvvv","xxxx");
答
是的,这是可能的使用hql,
对于这一点,你必须做的是
1)在您的测试类作为
public Test(int id, String aString, String anotherString){
this.id=id;
this.aString=aString;
this.anotherString =anotherString ;
}
2)在拿使用HQL写数据创建一个构造函数: 选择新的测试(entityAlias.id,entityAlias.aString,entityAlias.anotherString)来自EntityName entityAlias;
在内省的情况下 1)创建一个构造函数,其中参数的顺序是在我们的类中写入的order od字段。
2)使用反射手动准备查询。
我写了一个测试程序下面的查询创建参考: -
public static void main(String[] args) {
Class<Test> aClass = Test.class;
Field[] fieldArray = null;
String alias ="test";
int length=0;
try {
fieldArray = aClass.getFields();
length= fieldArray.length;
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
StringBuilder s=new StringBuilder("select new Test(");
for(int index=0; index<length ;index++){
s.append(alias+ "." +fieldArray[index].getName());
if(index != length -1){
s.append(" , ");
}
else{
s.append(") ");
}
}
s.append(" FROM Test " + alias);
System.out.println(s);
}
输出: 选择新的测试(test.id,test.aString,test.anotherString)测试从测试
谢谢为了您的回应。有没有办法通过自省来做到这一点? – djschorn
您是否想先内省测试类的字段,然后在查询中获取相应的字段? 如果你喜欢答案请upvote。 –
是的。我正在寻找一种自动的方式来做到这一点。因为在提出的解决方案中,我必须手动执行查询创建操作。谢谢 – djschorn