生成java内容实体
我有一个用hibernate 4管理的posgresql数据库,我想知道是否有方法从数据库的内容生成java对象实体 如果我有hibernate对象测试:生成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",
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感谢您的回答。有没有一种方法可以通过内省来实现这一点?您想先内省测试类的字段,然后获取查询中相应的字段吗?如果您喜欢答案,请向上投票。是的。我正在寻找一种自动实现这一点的方法。因为在提出的解决方案中,我必须手动执行以下操作:查询创建操作。谢谢