似乎使用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");
既没有奏效。有没有其他方法来获得这三个表的联合?
答案 0 :(得分:3)
请记住,ActiveJDBC是一个ORM,查询返回的所有属性必须与每个模型的表模式匹配。请看这里:Model#findBySQL()
具体来说,JavaDoc声明:&#34;确保查询返回与此模型关联的所有列,以便生成的模型可以正确地保持水分&#34;
这意味着你不能随意选择任何你想要的东西,但是查询必须只选择与它前面相关的列。如果您只需要使用任何原始SQL并返回所需内容,则可能需要使用类Base或DB。有关更多信息,请参阅此JavaDoc:
阅读文档以确定哪种方法最适合您。
答案 1 :(得分:0)
我在这里遇到同样的问题。 我的解决方案是:
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);