小弟刚开始接触EJB3.0,熟悉HQL(JPQL)的进来下,请教个问题

时间:2022-09-22 10:38:11
框架啥的都还好,就是感觉HQL中的表和字段都用对象封装起来,个人感觉一点都不形象。

我们的SQL是这样写的:
tring onHql = "select count(distinct stb." + EntityStb.P_Id + ") " + " from "
+ EntityStbOnlineEvent.ENTITY_NAME + " onlineevent" +" join  onlineevent."+EntityStbOnlineEvent.P_EntityStb+" stb join stb."+EntityStb.P_EntityRltStbUserdefineGroups+" rltgroup join rltgroup."+EntityRltStbUserdefineGroup.P_EntityStbUserdefineGroup+" stbgroup"
+" where (onlineevent." + EntityStbOnlineEvent.P_Ontime+" between :starttime and :endtime " 
+" or onlineevent."+EntityStbOnlineEvent.P_Offtime+" between :starttime and :endtime " 
+"or (onlineevent."+EntityStbOnlineEvent.P_Ontime+" <=:starttime and (onlineevent."+EntityStbOnlineEvent.P_Offtime+">=:endtime or onlineevent."
+ EntityStbOnlineEvent.P_Offtime+" is null)))"
+"and stbgroup."+EntityStbUserdefineGroup.P_Id+"=:groupid)";

想请教下各位高手,它这样规定的动机是什么?有什么好处?为什么不用传统的SQL?

希望高手给个形象点的回答,最好举个例子啥的。小弟在这里谢谢大家了~

6 个解决方案

#1


不形象 加深自己的oo的理解咯

#2



面向对象。

#3


比直接写SQL要跨平台(数据库产品)一些。

#4


你这乱八七糟的是 JPQL 么?

这个才是:

SELECT new com.test.server.entity.Goods(t.id, t.name, t.hotScore, t.imgUrl)
  FROM Goods t
 WHERE t.startTime <= :current
   AND t.endTime > :current
   AND t.goodsCategory.id = :cateId
 ORDER BY t.hotScore DESC, t.id DESC

#5


所谓面象对象编程...直接把表当作一个对象,表中的字段当成对象中的属性

#6


深刻理解面向对象的概念。。。就明白为什么了

#1


不形象 加深自己的oo的理解咯

#2



面向对象。

#3


比直接写SQL要跨平台(数据库产品)一些。

#4


你这乱八七糟的是 JPQL 么?

这个才是:

SELECT new com.test.server.entity.Goods(t.id, t.name, t.hotScore, t.imgUrl)
  FROM Goods t
 WHERE t.startTime <= :current
   AND t.endTime > :current
   AND t.goodsCategory.id = :cateId
 ORDER BY t.hotScore DESC, t.id DESC

#5


所谓面象对象编程...直接把表当作一个对象,表中的字段当成对象中的属性

#6


深刻理解面向对象的概念。。。就明白为什么了