生成java内容实体

生成java内容实体,java,hibernate,automation,Java,Hibernate,Automation,我有一个用hibernate 4管理的posgresql数据库,我想知道是否有方法从数据库的内容生成java对象实体 如果我有hibernate对象测试: Test ( int id, String aString, String anotherString ) 在表test中的数据库中: ID,AString,AnotherString 1,uuuu,iiii 2,vvvv,xxxx 我正在寻找一种生成如下结果的方法: Test test1 = new Test(1,"uuuu",

我有一个用hibernate 4管理的posgresql数据库,我想知道是否有方法从数据库的内容生成java对象实体

如果我有hibernate对象测试:

Test ( 
int id, 
String aString, 
String anotherString 
)
在表test中的数据库中:

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 write获取数据时: 从EntityName entityAlias中选择新测试(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);
    }
publicstaticvoidmain(字符串[]args){
Class aClass=Test.Class;
字段[]fieldArray=null;
字符串alias=“test”;
整数长度=0;
试一试{
fieldArray=aClass.getFields();
长度=fieldArray.length;
}捕获(安全异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
StringBuilders=new StringBuilder(“选择新测试(”);

对于(int index=0;index感谢您的回答。有没有一种方法可以通过内省来实现这一点?您想先内省测试类的字段,然后获取查询中相应的字段吗?如果您喜欢答案,请向上投票。是的。我正在寻找一种自动实现这一点的方法。因为在提出的解决方案中,我必须手动执行以下操作:查询创建操作。谢谢