Groovy应用中SELECT子句用'a'而非'*'的原因及语句作用解析
两个查询语句的差异分析
这两个查询不等效,具体区别如下:
第一个查询(ORM框架常用的JPQL/HQL语句)
SELECT a FROM Employee a WHERE a.emplID =123456
这里的a是Employee实体类的别名,这个语句会返回完整的Employee实体对象实例。在Groovy应用里,你可以直接通过对象的方法(比如a.emplID、a.name)访问该实体的所有属性,无需手动处理字段映射。
第二个查询(原生SQL语句)
SELECT * FROM Employee WHERE emplId=123456
这是原生SQL查询,它返回的是符合条件的行对应的所有原始字段集合(通常是数组或键值对Map)。你需要手动提取每个字段的值,无法直接用实体类的方式访问属性。
简单总结:前者返回业务对象,方便直接用代码操作;后者返回原始数据,需要额外处理才能映射到业务对象。
内容的提问来源于stack exchange,提问作者Hosea Media
相关产品推荐
相关产品推荐

