Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个类似ORM的java库,其中包含运行时定义的表,用于构建sql查询?_Java_Sql_Hibernate_Orm - Fatal编程技术网

是否有一个类似ORM的java库,其中包含运行时定义的表,用于构建sql查询?

是否有一个类似ORM的java库,其中包含运行时定义的表,用于构建sql查询?,java,sql,hibernate,orm,Java,Sql,Hibernate,Orm,我有以下问题:我们的程序运行在几个不同的数据库上,因此在编译时不知道确切的数据库结构。我们现在正在寻找一个库,它允许我们构建查询对象,可以将查询对象转换为几种SQL方言,并为我们提供一个简单的查询字符串 我们搜索类似于常规ORM库的东西,比如Hibernate。我们已经研究了其中的一些,但似乎除了表和列之外,所有的表和列都将在编译时定义为常规java类。如果我错了,请纠正我 ORM方法和我们的基本区别在于,我们不希望将java对象存储在数据库中,而是将查询生成为java对象。为了让我的观点更清楚

我有以下问题:我们的程序运行在几个不同的数据库上,因此在编译时不知道确切的数据库结构。我们现在正在寻找一个库,它允许我们构建查询对象,可以将查询对象转换为几种SQL方言,并为我们提供一个简单的查询字符串

我们搜索类似于常规ORM库的东西,比如Hibernate。我们已经研究了其中的一些,但似乎除了表和列之外,所有的表和列都将在编译时定义为常规java类。如果我错了,请纠正我

ORM方法和我们的基本区别在于,我们不希望将java对象存储在数据库中,而是将查询生成为java对象。为了让我的观点更清楚,我将向您展示一些示例代码,这些代码应该可以由库执行

QueryObject query = new QueryObject();
query.addSelectedTable("customers");
query.addSelectedColumn("customerID");
query.addSelectedColumn("firstname");
query.addCondition("age < 20");
query.addLimit(10);

System.out.println(query.toMySQL()); 
//prints SELECT customerID, firstname FROM customers WHERE age < 20 LIMIT 10;
QueryObject query=newqueryobject();
query.addSelectedTable(“客户”);
query.addSelectedColumn(“customerID”);
query.addSelectedColumn(“firstname”);
query.addCondition(“年龄<20”);
查询.添加限制(10);
System.out.println(query.toMySQL());
//打印从年龄小于20岁的客户中选择customerID和名字,限制为10岁;
我不知道是否有这样的图书馆,但如果你知道,我很乐意知道


如果要求更高,还有其他几个功能,那就太好了。例如,它还应该能够按照SELECT处理子查询和其他查询类型。但这将是太多的期望;-)

一种简单的方法是“多”会话,它有自己的配置(hibernateDialect)。也许重新初始化(hibernate)会话(programatic config)可以工作-从未尝试过。

您签出了吗?

您的意思是或CrieriaAPi?

是一个支持的开源Java ORM。在运行时,您可以通过API或反向工程DB模式来动态定义DB映射,然后运行查询,返回通用的类映射对象。事实上,使用这种方法,您不仅可以获得查询,还可以获得您可能期望的所有其他普通ORM功能—惰性关系、修改和提交对象的能力等等。

您是指CriteriaAPI吗?据我所知,这两个库都需要在编译时定义表结构。所以这不是我想要的,因为我需要在运行时定义表/列。看起来很棒。我想,这可能正是我想要的。但首先我必须仔细看看。作为第一个基础,Squiggle非常适合。但它也缺少一些真正需要的特性,比如限制、拥有、分组。它还具有选择查询的功能。但由于它是开源的,我认为我们将根据我们的需要扩展它。