1

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

4

1 回答 1

0

您可以使用数据库提供的任何子句。运行非标准查询时,使用 method 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(...)方法

于 2017-12-06T22:23:50.003 回答