JOIN子句在javalite JDBC中使用原始SQL

时间:2017-12-06 22:04:33

标签: activejdbc javalite

使用原始SQL时是否可以使用JOIN子句?如果是这样,我应该如何映射结果,因为至少涉及2个模型?

1 个答案:

答案 0 :(得分:0)

您可以使用数据库提供的任何子句。运行非标准查询时,请使用方法Model.findBySQL(...)

但是,在使用之前,请阅读其文档:

http://javalite.github.io/activejdbc/snapshot/org/javalite/activejdbc/Model.html#findBySQL-java.lang.String-java.lang.Object...-

具体来说,这个:

确保查询返回与此模型关联的所有列,以便生成的模型可以正确地保持水分。不属于此模型的返回列将被忽略,但可用于上述条款。

换句话说,无论您执行什么查询,它返回的列都应该与此模型的列匹配。从技术上讲,您的查询可以跨多个表,视图,甚至执行自定义函数,但结果集需要具有与此模型匹配的列。这是为什么?因为你的模型在ORM中是'O'。换句话说,它表示来自表的单个记录作为对象。

如果您的结果是多个模型,部分模型或其间的任何内容的混合,请不要使用模型API。使用基数:

List<Map> results = Base.findAll("complex custom query");

http://javalite.github.io/activejdbc/snapshot/org/javalite/activejdbc/Base.html#findAll-java.lang.String-

查看find(...)findAll(...)方法的变体