生成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)测试从测试

+0

谢谢为了您的回应。有没有办法通过自省来做到这一点? – djschorn

+0

您是否想先内省测试类的字段,然后在查询中获取相应的字段? 如果你喜欢答案请upvote。 –

+0

是的。我正在寻找一种自动的方式来做到这一点。因为在提出的解决方案中,我必须手动执行查询创建操作。谢谢 – djschorn