Criteria 外键匹配查询

简介: package jd; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cf
package jd;


import java.util.List;


import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;


import com.oracle.jingdong.entity.Goods;
import com.oracle.jingdong.entity.ThirdClass;


import entity.Student;


public class quchong {
public static void main(String[] args) {
Configuration cf=new Configuration().configure();
SessionFactory sf=cf.buildSessionFactory();
   Session session=sf.openSession();
   Transaction ts=session.beginTransaction();
   
   //Criteria cr=session.createCriteria(Goods.class);
  /*cr.setProjection( Projections.projectionList().
    add( Projections.groupProperty("thirdClass"))
    .add(Projections.groupProperty("brand")));*/
  // cr.createAlias("brand", "mt");
  
//    cr.setProjection(Projections.projectionList().
//     add( Projections.groupProperty("brand")));
     //cr.setProjection(Projections.distinct(Projections.property("thirdClass")));
  // cr.setProjection(Projections.distinct(Projections.property("brand")));
   //cr.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 
   //cr.add(Restrictions.eq("brand.brandId", 1) );
  
  /*cr.setProjection( Projections.projectionList().
    add( Projections.groupProperty("thirdClass"))
    .add(Projections.groupProperty("brand")));*/
  // cr.createAlias("brand", "mt");
  
//    cr.setProjection(Projections.projectionList().
//     add( Projections.groupProperty("brand")));
    //cr.setProjection(Projections.distinct(Projections.property("thirdClass")));
  // cr.setProjection(Projections.distinct(Projections.property("brand")));
   //cr.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 
    Criteria cr=session.createCriteria(Goods.class);//brandId为goods外键,为Brand主键
   //cr.add(Restrictions.eq("brand.brandId", 1));//是外键的直接用,没问题
   //cr.add(Restrictions.eq("brand.brandName", "aaa"));//报错
   cr.createAlias("brand", "b").add(Restrictions.eq("b.brandName", "aaa"));//不是外键的定义别名不报错

   List objList=cr.list();
  // System.out.println("dddddddddddd"+cr.list().size());
       for(Object obj:objList)
        System.out.println(((Goods)obj).getGoodsTitle());
    ts.commit();
}


}
目录
相关文章
|
4月前
|
存储 安全 开发者
删除 dmp 文件对系统有没有影响?你可能一直搞错了
.dmp文件是系统或程序崩溃时生成的内存转储文件,用于排查错误。普通用户删除不影响系统运行,适合清理磁盘空间。频繁蓝屏或调试时建议保留。可通过磁盘清理工具或手动删除。
|
6月前
|
缓存 安全 网络协议
免费在线IP地址查询工具
在日常的网络使用中,我们经常需要了解IP地址的信息,例如想要确认某个网站的IP地址、追踪某个网络攻击的来源等。此时,我们可以使用一些在线IP地址查询工具。
725 33
|
11月前
|
C语言
【C语言】continue 关键字详解
`continue` 关键字在 C 语言中用于跳过当前循环中的剩余代码,并立即开始下一次迭代。它主要用于控制循环中的流程,使程序在满足特定条件时跳过某些代码。
1172 1
【C语言】continue 关键字详解
|
Java 程序员 编译器
Java|如何正确地在遍历 List 时删除元素
从源码分析如何正确地在遍历 List 时删除元素。为什么有的写法会导致异常,而另一些不会。
345 3
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
349 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
|
机器学习/深度学习 安全
Prompt攻击
【8月更文挑战第5】
888 3
|
Web App开发 缓存 网络协议
get和post的区别!
get和post的区别!
|
C语言
|
XML API 开发者
API接口详解大全
API,全称应用程序编程接口(Application Programming Interface),是一种定义好的程序,它允许两个应用程序或者系统之间进行交互和数据交换。API提供了明确、标准化的接口规范,使得不同的软件能够通过相同的通信协议进行交互。