1. 程式人生 > >hql 使用in elements 進行多對多查詢

hql 使用in elements 進行多對多查詢

StringBuffer queryString=new StringBuffer();
  queryString.append("select distinct purchase from ConPurchaseInfo purchase,ConSalesInfo sales where sales.salesContractno    like '%"+value+"%' and purchase in elements(sales.conPurchaseInfo) and (purchase.id in(")
             .append(contractIds)
             .append(") or purchase.createUserId='"+userInfo.get(Constant.USERID_SESSION)+"' ) and purchase.recycleFlag=0 and purchase.contractStatus=0");
     if("user".equals(isUserOrOrg)){
      queryString.append(" and purchase.purchaseChiefId='"+id+"' ");
     }else if("org".equals(isUserOrOrg)){
      queryString.append(" and purchase.purchaseChiefDepartmentId in("+getOrgStrs(id,true)+") ");
     }else{
      queryString.append(" ");
     }
   if(StringUtils.isNotBlank(state)){
    queryString.append(" and ");
    queryString.append("purchase.applicationStatus ='" + state + "'");
   }
   queryString.append(" order by purchase.updateTime desc,purchase.signedDate desc");


是否有過這種需求?物件之間是多對多,需要一方查詢另一方,而條件是一方除了滿足自身的where限制意外,還要受關聯的多的一方的限制。

比如:

public class ConPurchaseInfo extends BaseEntityUUID implements ResourceEntity{
	private Set<ConSalesInfo> conSalesInfos;
	private static final long serialVersionUID = 1L;}

ConPurchaseInfo 中有對ConSalesInfo的關聯many-to-many,

現在要根據conSalesInfo中的屬性name來查詢conPurchaseInfo的資訊。

用sql是可以寫的,現在介紹hql寫法。

用到了in 和 in elements這兩個不同的用法

其中in 都知道了把,in elements 是專門針對set集合的。

最簡單例子hql如下:

select distinct purchase from ConPurchaseInfo purchase,ConSalesInfo sales where sales.name like '%"+value+"%' and purchasein elements(sales.conPurchaseInfo);

相關推薦

hql 使用in elements 進行查詢

StringBuffer queryString=new StringBuffer(); queryString.append("select distinct purchase from ConPurchaseInfo purchase,ConSalesInfo sa

ORM框架Hibernate關聯對映的HQL中的in條件查詢問題

Hibernate提供了6種查詢方法分別是: HQL查詢,物件化查詢Criteria,動態查詢DetachedCriteria,例子查詢,sql查詢,命名查詢。  如果單純的使用hibernate查詢

hibernate關於映射和一的hql查詢

nfa nat alt sso true chan select csdn exc public void queryCustomerbymerchantId(){ SessionFactory sf = HibernateUtil.getSessio

查詢的結果進行再分組

有時候查出的資料需要進行再次分組, (List<Object> 分組為   Map<String,List<Object>)   以下就是 根據資料庫中查出來資料物件的一個欄位的作為key, 將資料根據這個欄位進行分組, 常用於

HQL查詢(一對

https://www.cnblogs.com/kingxiaozi/p/6020956.html原作者一、一對多以班級Classes和學生Student為例:回憶sql語句://內連結,兩種方式效果一樣,查詢的是兩邊都有的資料SELECT c.*,s.* FROM clas

HQL 查詢寫法

List<Information> infolist = new ArrayList<Information>();infolist = getHibernateTemplate().find("select i FROM Information i

hibernate HQL 分頁 關聯查詢(一對單向,一 雙向,

HQL的 分頁 1.首先我們準備好實體類: package cn.happy.hibernate04pagelist; import cn.happy.hibernate03hql.conEmp; import java.util.Date; /** * Creat

python flask(查詢)

color mat integer ring 網上 uniq 自己的 class 根據 我們在flask的學習中,會難免遇到多對多表的查詢,今天我也遇到了這個問題。那麽我想了好久。也沒有想到一個解決的辦法,試了幾種方法,可能是思路的限制我放棄了,後來,我就在網上百度

mybatis10--自連接查詢

所有 bsp from 測試 java out void pan tid 查詢老師對應的所有導師的信息 在09的基礎上修改dao和mapper文件 public interface TeacherDao { /** * 根據老師的編號查詢所有的

mybatis11--關聯查詢

div 3.0 ctype his prop 1.0 加載 hash oct 多對多關聯! 其實就是兩個一對多的關聯! 比如說 一個學生可以有多個老師!一個老師可以有多個學生! 那麽 學生和老師之間的關系 可以理解為 多對多的關聯關系! 關鍵是怎麽建立數據庫中兩個表之

NHibernate教程(11)--關聯查詢

true 這一 -m hive 原生 .html etime virtual 及其 本節內容 多對多關系引入 多對多映射關系 多對多關聯查詢 1.原生SQL關聯查詢 2.HQL關聯查詢 3.Criteria API關聯查詢 結語 多對多關系引入 讓我們再次回顧在第

Django CRM查詢(一對以及相關的反查)

mce field 需要 fff etime fcc nbsp pre 使用 Customer模型: class Customer(models.Model): name = models.CharField(max_length=32) qq =

sql 復雜查詢 以teacher student course關系為例

mage 復雜查詢 tin 同學 北京 mode alt bsp bold 數據庫表和值 /* SQLyog Ultimate v8.32 MySQL - 5.7.17-log : Database - course_dbms *********************

mybatis: 查詢[轉]

clas gen log exce spring read 運行環境 ava alias 加入3個包 log4j-1.2.17.jar mybatis-3.3.0.jar mysql-connector-java-5.1.8.jar log4j需要配置 log4j.pr

spring data jpa關聯查詢(一對一、一對

sse eager save net array ota println ack generate   在實際過往的項目中,常用的查詢操作有:1、單表查詢,2、一對一查詢(主表和詳情表)3、一對多查詢(一張主表,多張子表)4、多對多查詢(如權限控制,用戶、角色多對多)。做個

0914 表與表之間的關系補充一對一關系 記錄操作 關鍵字 查詢

之一 留下 一個 子查詢 .sql 文件 font 總監 外鍵 1 表與表之間聯系之一對一關系補充   生活中的一對一     客戶表, 學員表     通過分析 一個客戶只對應一個學員 一個學員只對應一個客戶 所以確定關系為一對一 在mysql

67 orm13查詢語句,外鍵查詢查詢 單表查詢雙下劃線方法

ever tle 基礎 lte ron -s 執行流程 first 什麽 主要內容:https://www.cnblogs.com/maple-shaw/articles/9403501.html 註意: 如果想要文件中運行整個django項目:   需要在文件中寫入:

【筆記】Mybatis高階查詢(四)--使用resultMap的<collection>標籤實現一對查詢

<collection>集合的巢狀結果對映就是指通過一次SQL查詢將所有的結果查詢出來,然後對映到不同的物件中。在一對多的關係中,主表一條資料會對應關聯表的多條資料。因此一般查詢時會查詢出多條結果,按照一對多的資料對映時,最終的結果數會小於等於查詢的總記錄數。

Mybatis之一對查詢

association是用於一對一和多對一,而collection是用於一對多的關係 一對一(訂單和使用者): <select id="findOrdersUser" resultType="com.mybatis.xdw.po.OrdersCustom"> select

mybatis實現表一對一,一對關聯查詢

轉自:https://blog.csdn.net/m0_37787069/article/details/79247321 1、一對一 關鍵字:association 作用:針對pojo物件屬性的對映       property:pojo的屬性名   &