1

似乎使用 ActiveJDBC 非常有限

我有三个表 a、b 和 c 他们都有文本列我想要所有这些表的联合

我试过了

LazyList<A> list = A.findBySQL("(select name as text from a) union (select version as text from b) union (select id as text from c)

我试过了

LazyList<A> list = A.findBySQL("select a.* from ((select name as text from a) union (select version as text from b) union (select id as text from c)) as a");

都没有工作。有没有其他方法可以合并这三个表?

4

2 回答 2

4

请记住,ActiveJDBC 是一个 ORM,查询返回的所有属性必须与每个模型的表模式匹配。请看这里:Model#findBySQL()

具体来说,JavaDoc 声明:“确保查询返回与此模型关联的所有列,以便生成的模型可以正确地水合自身”

这意味着您不能随意选择任何您想要的东西,但查询必须只选择与其前面的表相关的列。如果您只需要使用任何原始 SQL 并返回您需要的任何内容,您可能需要使用类 Base 或 DB。有关更多信息,请参阅此 JavaDoc:

Base#findAll()Base#find()

阅读文档以确定哪种方法最适合您。

于 2015-01-21T05:27:50.887 回答
1

我在这里有同样的问题。我的解决方案是:

String query = "select a.* from ((select name as text from a) union (select version as text from b) union (select id as text from c)) as a"; List<Map> result = new DB("default").all(query);

于 2016-07-16T23:54:54.077 回答