生成java内容实体

时间:2016-09-06 06:56:42

标签: java hibernate automation

我有一个用hibernate 4管理的posgresql数据库,我想知道是否有办法生成来自数据库内容的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");

1 个答案:

答案 0 :(得分:0)

是的,这可以使用hql,

为此你需要做的是

1)在Test Class中创建一个构造函数

 public Test(int id,  String aString,  String anotherString ){
       this.id=id;
       this.aString=aString;
       this.anotherString =anotherString ;

}

2)使用hql write获取数据时: 从EntityName entityAlias中选择新的Test(entityAlias.id,entityAlias.aString,entityAlias.anotherString);

在内省的情况下 1)创建一个构造函数,其中参数的顺序是在我们的类中写入的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(test.id,test.aString,test.anotherString)FROM Test test