首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ICriteria可以返回IDictionary而不是List <DTO>吗?

ICriteria是Hibernate框架中的一个接口,用于构建查询条件并执行查询操作。它提供了一种面向对象的查询方式,可以通过设置查询条件、排序规则等来获取符合条件的结果集。

ICriteria接口的返回类型是一个List集合,其中包含了符合查询条件的DTO对象。DTO(Data Transfer Object)是一种数据传输对象,用于封装从数据库中查询出的数据。

根据Hibernate的设计原则,ICriteria接口返回的是一个List集合,而不是IDictionary。List集合更适合表示一组有序的对象,而IDictionary(字典)则适用于表示键值对的集合。

因此,ICriteria不可以直接返回IDictionary而不是List<DTO>。如果需要将查询结果转换为IDictionary,可以通过遍历List集合,将DTO对象的某个属性作为键,DTO对象本身作为值,构建一个IDictionary对象。

关于ICriteria的更多信息和使用方法,可以参考腾讯云的Hibernate文档:Hibernate文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

还在写大量 if 来判断?试试用一个规则执行器来替代它

对于目前的现状来说,我如果在原有的基础上来改,只要稍微注意一下解决需求不是很大的问题,但是说后面可维护性非常差。 后面进过权衡过后,我还是决定将这个部分进行重构一下。...) {         for (Map.Entry> item : hashMap.entrySet()) {             List<BaseRule...}         // and 关系全部匹配成功,返回 true         return true;     }     private boolean or(RuleDto dtoList...缺点: 上下 rule 有数据依赖性,如果直接修改公共传输对象 dto 这样设计不是很合理,建议提前构建数据。 END 往期推荐 低代码平台如何一步步摧毁开发团队的效率与创新!...Spring Boot 解决跨域问题的 3 种方案 把 14 亿人都拉到一个微信群,在技术上能实现? 这样统计代码执行耗时,才足够优雅! 来看看Google的未来工作环境设计,有你喜欢的元素

33010
  • DDD-CQRS能解什么问题

    > promotion; 组合领域对象是领域?...事件源不是必须项, 读写分离 如果一个方法修改了对象的状态,就是一个命令,不应该返回数据 阻抗:创建资源的时候,不是返回资源id(这个不是重点可以忽略) 如果一个方法返回了数据,该方法就是一个查询...落地 事件溯源目前比较难落地,读写分离可以尝试。 遵循聚合根的定义,必须与对象的组合区分开,对象组合考虑用DTO或者其他 我们再来回顾下聚合根。...聚合之间的关联通过ID,不是对象引用 聚合内强一致性,聚合之间最终一致性 为了查询,领域聚合根无限扩大 组合领域对象是领域?...像商品详情页这种应该使用DTO来组合。

    1K10

    阿里华为等大厂架构师如何解决空指针问题

    List不是空而是null,没有判空就直接调用List的方法 入参test:由0、1构成,长度为4的字符串,第几位为1就代表第几个参数为null,以此控制wrongMethod方法的4个入参,模拟各种...BarService的bar方法不是返回了OK? FooService中的barService字段为null。...对程序来说,null就是指针没有任何指向,结合业务逻辑情况就复杂得多,需考虑: DTO中字段的null到底意味着什么?是客户端没传给这个字段? 既然空指针很讨厌,那么DTO中的字段要设默认值?...: 存在如下问题: 调用方只希望重置用户名,但age也被设为了null nickname是用户类型加姓名,name重置为null的话,访客用户的昵称应该是guest,不是guestnull 用户的创建时间原来是...原因是: MySQL中sum函数没统计到任何记录时,会返回null不是0,可以使用IFNULL函数把null转换为0 MySQL中count字段不统计null值,COUNT(*)才是统计所有记录数量的正确方式

    1.2K30

    打开orika的正确方式

    DTO的位置 就系统的某一个模块,可以大致分成领域层model,接口定义层api,接口实现层/服务层service,表现层web。...集合可以自动映射?这一切Orika都帮助我们完成了,在默认行为下,只要类的字段名相同,Orika便会尽自己最大的努力帮助我们映射。... classMap()方法返回了一个ClassMapBuilder对象,如上所示,我们见识到了它的field(),byDefault(),register()方法,这个建造者指定了对象映射的众多行为...集合映射 在类中我们之前已经见识过了ListList的映射。...可以看到几乎每个方法都传入了一个Type,用于获取拷贝类的真实类型,不是传入.class字节码,下面介绍正确的打开姿势: @Testpublic void genericTest1() { MapperFactory

    3.8K110

    dotNET Core 3.X 使用 Web API

    这个结果不是我们所期望的,之前没有 [ApiController] 特性的时候,需要在接口方法中处理,如下: [HttpPost] [Route("adduser")] public ActionResult...错误信息统一返回 之前的文章中有讲过使用过滤器的方式来做到结果的统一返回。这里介绍另一种方式,使用 ConfigureApiBehaviorOptions ,可以让我们自定义错误信息的返回内容和格式。...view=aspnetcore-3.1 数据塑形 在 API 中返回结果到前端时,一般不会直接将底层的 Entity 返回,会创建相对应的 Dto,比如,用户的 Entity 是这样的 public class...同样的接口在前端不同的场景下需要返回不一样的字段数据,一种方式是创建很多不同的接口,返回不同的 Dto 的结果,但这样做非常繁琐,可以通过 ExpandoObject 来实现按客户端的需要进行返回结果,...具体步骤如下: 1、因为获取用户列表的接口方法的是 List,所以先创建一个 IEnumerable 的扩展方法,该扩展方法用于根据传进的字段参数来组装返回的结果,代码如下: public static

    1.6K30

    Magicodes.IE 2.3重磅发布——.NET Core开源导入导出库

    对于新特点的功能我将在下面进行详细的描述,当然也欢迎更多的人可以加入进来,再或者也很期待大家来提issues或者PR,您的一个issue或者PR将是我们前进的动力。...在多个DTO导出中我们可以通过如下代码片段将我们的Excel分栏导出 exporter.Append(list1).SeparateByColumn().Append(list2).ExportAppendData...).SeparateBySheet().Append(list2).ExportAppendData(filePath); 当然不仅仅是这样,我们还可以对行进行追加导出,同时我们可以选择导出额外的Header...信息或者不导出 exporter.Append(list1).SeparateByRow().Append(list2).ExportAppendData(filePath); header 1 header...{ var propertyValue = propertyInfo.GetValue(person); ((IDictionary

    48210

    C#语言各种集合介绍

    接口,所以任何集合类对象都有一个GetEnumerator()方法,该方法可以返回一个实现了 IEnumerator接口的对象,这个返回的IEnumerator对象既不是集合类对象,也不是集合的元素类对象...但是它的行为太过基本:主要就是一个Count属性,单独实现它没有太大意义 2)IEnumerable 公开枚举数,该枚举数支持在集合上进行简单迭代 它只有一个方法 GetEnumerator(),该方法可以返回一个...IDictionary可称为字典、映射或散列表,它根据键(任意类型)来访问值 2.System.Collections中可以直接使用的集合类有: 1)ArrayList 实现了接口:IList、ICollection...3)Hashtable 实现了接口:IDictionary、ICollection、IEnumerable 可以向Hashtable中自由添加和删除元素,有些像ArrayList,但没有那么大的性能开销...O(log n) 随集合中元素的增加增加,每个元素需要增加的时间不是线性的,而是呈对数曲线。

    62021

    细思极恐 - 你真的会写 Java ?

    这种理解是错误的,只要是用于网络传输的对象,我们都认为他们可以当做是 DTO 对象,比如电商平台中,用户进行下单,下单后的数据,订单会发到 OMS 或者 ERP 系统,这些对接的返回值以及入参也叫 DTO...一个一个进行 set 数据?当然,如果你这么做了,肯定不会有什么问题,但是,这肯定不是一个最优的做法。 网上有很多工具,支持浅拷贝或深拷贝的 Utils。...convertFor(userInputDTO); return userService.addUser(user); 这两段代码都没有暴露实现,都是在讲如何在同一个方法中,做一组相同层次的语义操作,不是暴露具体的实现...; } } 看一下 doBackward 方法,直接抛出了一个断言异常,不是业务异常,这段代码告诉代码的调用者,这个方法不是准你调用的,如果你调用,我就”断言”你调用错误了。...(注意:是有条理的重构) 设计模式 设计模式就是工具,不是提现你是否是高水平程序员的一个指标。 我经常会看到某一个程序员兴奋的大喊,哪个程序哪个点我用到了设计模式,写的多么多么优秀,多么多么好。

    49230

    细思极恐-你真的会写java?

    这种理解是错误的,只要是用于网络传输的对象,我们都认为他们可以当做是DTO对象,比如电商平台中,用户进行下单,下单后的数据,订单会发到OMS 或者 ERP系统,这些对接的返回值以及入参也叫DTO对象。...一个一个进行set数据?当然,如果你这么做了,肯定不会有什么问题,但是,这肯定不是一个最优的做法。 网上有很多工具,支持浅拷贝或深拷贝的Utils....我们再看这个保存用户的例子,你将发现,api中返回值是有些问题的,问题就在于不应该直接返回User实体,因为如果这样的话,就暴露了太多实体相关的信息,这样的返回值是不安全的,所以我们更应该返回一个DTO...; } } 看一下doBackward方法,直接抛出了一个断言异常,不是业务异常,这段代码告诉代码的调用者,这个方法不是准你调用的,如果你调用,我就”断言”你调用错误了。...(); Lists命名是一种约定(俗话说:约定优于配置),它是指Lists是List这个类的一个工具类,那么使用List的工具类去产生List,这样的语义是不是要比直接new一个子类来的更直接一些呢,

    62150

    开源导入导出通用库Magicodes.ExporterAndImporter发布

    特性导出 列头处理或者多语言支持 导入Demo 普通模板 多数据类型 数据验证 Docker中使用 Dockerfile Demo 特点 封装导入导出业务,目前仅支持 Excel,有兴趣的小伙伴可以考虑支持...CSV 以及PDF或其他格式的导出 配置特性即可控制相关逻辑和显示结果,无需修改逻辑代码 推荐配合 导入导出DTO 使用 导出支持列头自定义处理以便支持多语言等场景 导出支持文本自定义过滤或处理 导入支持自动根据导入...DTO生成导入模板及模板验证 导入支持数据验证逻辑 导入支持数据下拉选择 导入支持注释添加 相关官方Nuget包 ?...Errors:IDictionary 整个Excel错误集合。目前仅支持数据验证错误。...FieldErrors:IDictionary 数据验证错误。 Demo2-1 普通模板 生成模板 ?

    33620

    细思极恐 :你真的会写 Java ?

    这种理解是错误的,只要是用于网络传输的对象,我们都认为他们可以当做是DTO对象,比如电商平台中,用户进行下单,下单后的数据,订单会发到OMS 或者 ERP系统,这些对接的返回值以及入参也叫DTO对象。...一个一个进行set数据?当然,如果你这么做了,肯定不会有什么问题,但是,这肯定不是一个最优的做法。 网上有很多工具,支持浅拷贝或深拷贝的Utils....我们再看这个保存用户的例子,你将发现,api中返回值是有些问题的,问题就在于不应该直接返回User实体,因为如果这样的话,就暴露了太多实体相关的信息,这样的返回值是不安全的,所以我们更应该返回一个DTO...; } } 看一下doBackward方法,直接抛出了一个断言异常,不是业务异常,这段代码告诉代码的调用者,这个方法不是准你调用的,如果你调用,我就”断言”你调用错误了。...(); Lists命名是一种约定(俗话说:约定优于配置),它是指Lists是List这个类的一个工具类,那么使用List的工具类去产生List,这样的语义是不是要比直接new一个子类来的更直接一些呢,答案是肯定的

    1.5K90

    细思极恐 - 你真的会写 Java ?

    这种理解是错误的,只要是用于网络传输的对象,我们都认为他们可以当做是 DTO 对象,比如电商平台中,用户进行下单,下单后的数据,订单会发到 OMS 或者 ERP 系统,这些对接的返回值以及入参也叫 DTO...一个一个进行 set 数据?当然,如果你这么做了,肯定不会有什么问题,但是,这肯定不是一个最优的做法。 网上有很多工具,支持浅拷贝或深拷贝的 Utils。...convertFor(userInputDTO); return userService.addUser(user); 这两段代码都没有暴露实现,都是在讲如何在同一个方法中,做一组相同层次的语义操作,不是暴露具体的实现...; } } 看一下 doBackward 方法,直接抛出了一个断言异常,不是业务异常,这段代码告诉代码的调用者,这个方法不是准你调用的,如果你调用,我就”断言”你调用错误了。...(注意:是有条理的重构) 设计模式 设计模式就是工具,不是提现你是否是高水平程序员的一个指标。 我经常会看到某一个程序员兴奋的大喊,哪个程序哪个点我用到了设计模式,写的多么多么优秀,多么多么好。

    57630

    使用 dynamic 类型让 ASP.NET Core 实现 HATEOAS 结构的 RESTful API

    上一篇写的是使用静态基类方法的实现步骤: http://www.cnblogs.com/cgzl/p/8726805.html 使用dynamic (ExpandoObject)的好处就是可以动态组建返回类型..., 之前使用的是ViewModel, 如果想返回结果的话, 肯定需要把ViewModel所有的属性都返回, 如果属性比较多, 就有可能造成性能和灵活性等问题....而使用ExpandoObject(dynamic)就可以解决这个问题....最后返回该对象. 下面测试一下. POST: ? 结果: ? 由于POST方法里面没有选择任何fields, 所以返回所有的属性. 下面试一下GET: ?...但是有一个问题, 因为返回的json的Pascal case的(只有dynamic对象返回的是Pascal case, 其他ViewModel现在返回的都是camel case的), camel case

    1.2K60

    探究 C# dynamic动态类型本质

    首先动态类型是静态类,不是一种称之为“动态”的类型,只不过这个类型的对象会跳过静态类型检查。 也就是在编译过程中不报错,但是运行程序将对象初始化之后,它该是什么类型,那么还是什么类型。...obj2.id); Console.WriteLine(obj2.title); Console.WriteLine(obj2.completed); 运行结果如下 他们输出的结果一样,但你认为他们的返回结果是一样的...然而你是可以通过重新赋值改变类型的,当然这是公共语言运行时 (CLR) 提供的动态技术。...给它赋一个其他类型的值,将会报错;给obj2的成员变量赋其他类型的值,则不会报错。...()); } 通过.成员变量的方式访问内容,可以说这是伪装的成员变量。

    16630

    开源导入导出通用库Magicodes.ExporterAndImporter发布

    列头处理或者多语言支持 导入Demo 普通模板 多数据类型 数据验证 Docker中使用 Dockerfile Demo ---- 特点 封装导入导出业务,目前仅支持 Excel,有兴趣的小伙伴可以考虑支持...CSV 以及PDF或其他格式的导出 配置特性即可控制相关逻辑和显示结果,无需修改逻辑代码 推荐配合 导入导出DTO 使用 导出支持列头自定义处理以便支持多语言等场景 导出支持文本自定义过滤或处理...导入支持自动根据导入DTO生成导入模板及模板验证 导入支持数据验证逻辑 导入支持数据下拉选择 导入支持注释添加 相关官方Nuget包 ?...Errors:IDictionary 整个Excel错误集合。目前仅支持数据验证错误。...FieldErrors:IDictionary 数据验证错误。 Demo2-1 普通模板 生成模板 ?

    79820

    恕我直言,在座的各位根本写不好Java!

    这种理解是错误的,只要是用于网络传输的对象,我们都认为他们可以当做是 DTO 对象,比如电商平台中,用户进行下单,下单后的数据,订单会发到 OMS 或者 ERP 系统,这些对接的返回值以及入参也叫 DTO...一个一个进行 set 数据?当然,如果你这么做了,肯定不会有什么问题,但是,这肯定不是一个最优的做法。 网上有很多工具,支持浅拷贝或深拷贝的 Utils。...convertFor(userInputDTO); return userService.addUser(user); 这两段代码都没有暴露实现,都是在讲如何在同一个方法中,做一组相同层次的语义操作,不是暴露具体的实现...; } } 看一下 doBackward 方法,直接抛出了一个断言异常,不是业务异常,这段代码告诉代码的调用者,这个方法不是准你调用的,如果你调用,我就”断言”你调用错误了。...(注意:是有条理的重构) 设计模式 设计模式就是工具,不是提现你是否是高水平程序员的一个指标。 我经常会看到某一个程序员兴奋的大喊,哪个程序哪个点我用到了设计模式,写的多么多么优秀,多么多么好。

    60040

    关于DO,VO,DTO,QueryParam的思考

    DaoImpl的入参定义中,DTO和QueryParam统一不需要转换对象,因为还是接口之间的参数传递,但在DaoImpl中,操作数据库之前,需要将DTO对象转化为DO对象,QueryParam可以选择用...增加删除修改等操作,前端往往只需要判断操作成功没有即可,所以返回值一般不是一个对象,对于非对象的传输可以直接返回。...另外如查询操作,一般会涉及到分页,查出来的数据是List形式展现从数据库查到的是DO对象,当这种操作返回值时会从Mapper-->Dao-->Service-->Controller一层一层返回回去,...如下图红框操作所示,从DO的list转化为DTOlist作为返回值列表。...在数据库操作之前,DTO对象需要转换为DO 在返回值的过程中,数据库返回的对象除基本类型之外需要转为DTO传递 在返回值回到Controller时,需要将DTO对象转换为VO对象,从而返回给前端

    2.5K10

    你见过哪些目瞪口呆的 Java 代码技巧?

    这种理解是错误的,只要是用于网络传输的对象,我们都认为他们可以当做是 DTO 对象,比如电商平台中,用户进行下单,下单后的数据,订单会发到 OMS 或者 ERP 系统,这些对接的返回值以及入参也叫 DTO...一个一个进行 set 数据?当然,如果你这么做了,肯定不会有什么问题,但是,这肯定不是一个最优的做法。 网上有很多工具,支持浅拷贝或深拷贝的 Utils。...convertFor(userInputDTO); return userService.addUser(user); 这两段代码都没有暴露实现,都是在讲如何在同一个方法中,做一组相同层次的语义操作,不是暴露具体的实现...; } } 看一下 doBackward 方法,直接抛出了一个断言异常,不是业务异常,这段代码告诉代码的调用者,这个方法不是准你调用的,如果你调用,我就”断言”你调用错误了。...(注意:是有条理的重构) 设计模式 设计模式就是工具,不是提现你是否是高水平程序员的一个指标。 我经常会看到某一个程序员兴奋的大喊,哪个程序哪个点我用到了设计模式,写的多么多么优秀,多么多么好。

    14910

    恕我直言,在座的各位根本不会写 Java!

    这种理解是错误的,只要是用于网络传输的对象,我们都认为他们可以当做是 DTO 对象,比如电商平台中,用户进行下单,下单后的数据,订单会发到 OMS 或者 ERP 系统,这些对接的返回值以及入参也叫 DTO...一个一个进行 set 数据?当然,如果你这么做了,肯定不会有什么问题,但是,这肯定不是一个最优的做法。 网上有很多工具,支持浅拷贝或深拷贝的 Utils。...convertFor(userInputDTO); return userService.addUser(user); 这两段代码都没有暴露实现,都是在讲如何在同一个方法中,做一组相同层次的语义操作,不是暴露具体的实现...; } } 看一下 doBackward 方法,直接抛出了一个断言异常,不是业务异常,这段代码告诉代码的调用者,这个方法不是准你调用的,如果你调用,我就”断言”你调用错误了。...(注意:是有条理的重构) 设计模式 设计模式就是工具,不是提现你是否是高水平程序员的一个指标。 我经常会看到某一个程序员兴奋的大喊,哪个程序哪个点我用到了设计模式,写的多么多么优秀,多么多么好。

    72310
    领券