DetechedCriteria与Criteria

本文介绍了Hibernate中Criteria接口和DetechedCriteria类的基本概念及其使用方式,包括条件添加、排序设置、关联查询等内容,并详细解释了两者之间的区别。

简介

Criteria接口和DetechedCriteria类都继承了CriteriaSpecification接口,都相当于Hibernate查询时的一个容器,用以装条件的。

Criteria的实现类:CriteriaImpl, CriteriaImpl.Subcriteria。

他们的区别主要是创建形式不一样:

criteria是在线的,由session创建。

DetechedCriteria是离线的,Spring框架提供了HibernateTemplate().findByCriteria(detachedCriteria)方法来使用DetechedCriteria作为查询的容器。

DetechedCriteria提供两个静态方法:

                        DetachedCriteria.forClass(Class clazz);
			DetachedCriteria.forEntityName(String entityName);

Criteria和DetechedCriteria都有add(Criterion criterion)方法和setProjection(Projection projection)方法来添加查询查询条件、addOrder(Order order)方法添加排序等。

其中:

Criterion接口作为Criteria的查询条件,主要的实现类有:Junction(包括Disjuction和Conjunction)、Example、SimpleExpression。其中Junction和SimpleExpression实例由Restrictions工具类创建的,Example提供静态方法创建实例。

Projection接口主要是进行报表查询,也可以实现分组,主要的实现类有:SimpleProjection 、 ProjectionList 和、Property

。同样地SimpleProjection 和ProjectionList 实例由Projections工具类创建,Property是对某个字段的设置查询条件的。

Criteria

createAlias(java.lang.String associationPath, java.lang.String alias, JoinType joinType)使用指定的连接类型加入关联,为连接的关联分配一个别名(JoinType 可不写)
createCriteria(java.lang.String associationPath, java.lang.String alias, JoinType joinType)创建一个新的Criteria,在相关的实体上“扎根”,分配给定的别名并使用指定的联接类型(JoinType 可不写)。

假设情形:

class Project{
   public Job Job;
}

class Job{
   public Name;
}

如果需要搜索Job的名称为“sumthing”的所有项目

ICriteria criteriacrit = session
  .CreateCriteria(typeof (Project))
  .CreateCriteria("Job", "job")
  .Add(Restrictions.Eq("job.Name", "sumthing"));

ICriteria aliascrit = session
  .CreateCriteria(typeof (Project))
  .CreateAlias("Job", "job")
  .Add(Restrictions.Eq("job.Name", "sumthing"));

Restrictions

and(Criterion lhs, Criterion rhs)符合两个表达式的组合

conjunction(Criterion... conditions)将表达式组合在一起(A和B和C ...)  相当于and

or(Criterion lhs, Criterion rhs)两个表达式符合其中一个即可

disjunction(Criterion... conditions)将表达式组合在一个单独的析取(A或B或C ...)中。相当于or

eqOrIsNull(java.lang.String propertyName, java.lang.Object value)对指定的属性应用“相等”约束。 和eq(相等)一样

eqProperty(java.lang.String propertyName, java.lang.String otherPropertyName)同上

ge(java.lang.String propertyName, java.lang.Object value)对指定的属性应用“大于或等于”约束;gt为大于,le为小于等于,lt小于,ne不等于

geProperty(java.lang.String propertyName, java.lang.String otherPropertyName)对两个属性之间应用“大于或等于”约束 

ilike(java.lang.String propertyName, java.lang.Object value)不区分大小写的“like”(自己写%)

in(java.lang.String propertyName, java.lang.Object... values)对命名属性应用“in”约束。(可以是集合或其他)

not(Criterion expression)返回表达式的否定

Projections

property(java.lang.String propertyName)属性值投影

count(java.lang.String propertyName)属性值计数投影(看有多少列数据)

countDistinct(java.lang.String propertyName)一个不同的属性值计数投影(多少列不同的数据)

projectionList()创建一个新的投影列表。

alias(Projection projection, java.lang.String alias)通过包装为投影分配别名

                        criteria.setProjection(Projections.alias(Projections.groupProperty("age"), "ageAlies"))
			.addOrder(Order.asc("ageAlies"));
内容概要:本文围绕考虑隐私保护的分布式联邦学习在电力负荷预测中的应用展开研究,并提供了完整的Python代码实现。该方法采用联邦学习的分布式架构,允许多个数据持有方在不共享原始敏感数据的前提下协同训练高精度的负荷预测模型,有效解决了数据孤岛用户隐私泄露之间的矛盾。研究详细阐述了联邦学习的核心机制,包括本地模型训练、加密参数上传、全局模型聚合等关键流程,并基于真实电力负荷数据进行了实验验证,结果表明该方法在保障数据隐私安全的同时,仍能保持优异的预测性能模型泛化能力。; 适合人群:具备一定机器学习基础和电力系统背景的研究人员,以及从事负荷预测、数据隐私保护、联邦学习算法开发的研究生和技术人员。; 使用场景及目标:①应用于居民区、工业园区等多主体参的电力负荷预测场景,解决跨机构数据协作中的隐私合规问题;②为构建安全可信的智能电网数据共享分析平台提供关键技术支撑;③推动联邦学习在能源互联网、需求响应、虚拟电厂等领域的工程化落地。; 阅读建议:建议读者结合所提供的Python代码进行动手实践,深入理解联邦学习的通信协议、梯度聚合机制隐私保护策略,可在复现实验的基础上尝试引入差分隐私、同态加密等增强手段,或优化模型结构以提升预测效率精度。
内容概要:本文提出了一种基于压缩感知中密钥控制测量矩阵的新型图像压缩加密混合算法,深度融合压缩感知理论现代密码学机制,实现图像在高效压缩的同时完成高强度的安全加密。该算法通过引入密钥动态生成或调控测量矩阵,确保仅有持有正确密钥的授权方能够准确重构原始图像,从而显著提升系统的抗攻击能力和保密性。文中系统阐述了算法的设计原理、密钥控制机制、测量矩阵构造方法以及信号重构流程,并基于Matlab平台进行了完整的代码实现仿真实验,验证了该算法在压缩效率、重构图像质量(如PSNR、SSIM指标)以及抵抗常见攻击(如噪声、剪切、统计分析)等方面的优异性能。; 适合人群:具备信号处理、信息安全或数字图像处理基础知识,正在从事相关领域研究的研究生、科研人员及工程技术开发者。; 使用场景及目标:①适用于军事通信、医疗影像安全传输、云端敏感图像存储等需兼顾压缩效率数据安全的场景;②为探索压缩感知信息安全交叉领域的研究人员提供可复现的算法设计范例仿真代码参考;③推动图像数据在传输存储过程中实现高效性安全性的有机统一。; 阅读建议:建议读者结合提供的Matlab代码深入理解算法实现细节,重点分析密钥控制测量矩阵的生成逻辑及其对重构性能的影响,同时可在不同类型的图像数据集上进行测试,以全面评估算法的鲁棒性泛化能力。
内容概要:本文研究了一种面向间歇性拒绝服务(DoS)攻击的混合动态事件触发微电网多目标二次均衡控制策略,旨在保障孤岛微电网在遭受网络安全威胁时仍能实现电压频率的稳定恢复有功无功功率的精确均分。通过构建非奇异终端滑模面,结合基于强化学习的RBF神经网络扰动观测器,有效提升了系统对未知扰动和攻击导致通信中断的鲁棒性;同时引入混合动态事件触发机制,显著降低了控制器间的通信频率,节约了通信资源。该方法在Simulink平台上建立了完整的微电网仿真模型,验证了所提控制框架在复杂攻击场景下的有效性优越性,实现了安全性、稳定性资源效率的协同优化。; 适合人群:具备电力系统自动化、现代控制理论基础及MATLAB/Simulink仿真能力的研究生、科研人员,以及从事微电网控制系统设计安全防护的工程技术人员。; 使用场景及目标:① 提升高危网络环境下微电网的抗攻击能力运行可靠性;② 实现二次控制中多目标(电压、频率、功率分配)的协同优化调控;③ 在保证动态响应性能的前提下减少通信开销,适用于资源受限的分布式能源系统实际部署场景。; 阅读建议:建议读者结合提供的Simulink仿真模型深入理解控制器的设计流程稳定性分析方法,重点关注滑模面构造、RBF神经网络补偿机制及事件触发阈值设定等关键技术环节,并可根据具体应用场景调整参数以实现定制化优化。
内容概要:本文针对高渗透率新能源接入背景下电力系统稳定运行的挑战,研究了可切换构网型(GFM)跟网型(GFL)逆变器之间的双向平滑切换控制策略。传统GFL逆变器依赖电网锁相运行,在弱电网或孤岛工况下易失稳;而GFM逆变器虽具备自主建压能力,但在并网时缺乏同步调节机制,难以实现无缝切换。为此,文章提出一种基于共用硬件平台和统一内环控制架构的双向切换策略,重点设计了切换判据、切换时序及过渡过程中的平滑抑制方法,有效避免切换过程中出现功率冲击、电压畸变和频率波动等问题。研究建立了GFLVSG型GFM逆变器的完整控制模型,并通过Simulink仿真实验验证了该策略在不同工况下的有效性,结果表明系统在模式切换过程中能够保持良好的动态响应和平滑过渡性能。; 适合人群:从事电力电子、新能源并网控制、微电网智能配电网研究的科研人员及工程技术人员,具备一定电力系统控制理论基础的研究生及以上学历人员。; 使用场景及目标:①应用于分布式光伏、储能系统等新能源并网设备,提升其在复杂电网环境下的适应性稳定性;②实现逆变器在并网孤岛模式间的无缝切换,增强微电网的自治运行能力;③为构网型跟网型控制技术的融合应用提供理论支持工程参考。; 阅读建议:建议结合文中提供的Simulink仿真模型进行实践操作,重点关注切换判据设置过渡控制策略的实现细节,同时可进一步拓展至多机并联系统中的协同切换研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值