gpt4 book ai didi

java - 使用 hibernate 获得更少的列

转载 作者:搜寻专家 更新时间:2023-10-31 08:10:33 24 4
gpt4 key购买 nike

我有一个包含 11 列的表,但我只需要在我的应用程序中获取其中的 2 列,我使用的是 spring/hibernate/DAO 组合。现在我有一个包含所有 11 个字段的域类,以及映射表中所有 11 列的映射文件。我如何使用只获取其中的 2 个而不是全部?

最佳答案

或者:

  1. 使用投影 - 优点:无需添加 - 缺点:类型不安全(结果是一个 List 行,其中每一行都是一个 Object[]) :

     select f.foo, f.bar from FatEntity f
  2. 在 SELECT 子句中使用构造函数表达式(指定的类不需要是实体或映射到数据库) - 优点:类型安全解决方案 - 缺点:更多类,除非你重用 FatEntity 作为持有者,在这种情况下许多字段将为 null:

     select new com.acme.FatEntityDetails(f.id, f.foo, f.bar) from FatEntity f

    请注意,如果在 SELECT NEW 子句中指定了实体类名称,则生成的实体实例将处于new 状态(无持久标识)。

  3. 使用另一个映射到同一个表上且仅包含必填字段的实体 - 优点:这是一个您可以修改和更新的真实实体 - 缺点:更多类。

     from LightEntity

#2 和#3 之间的主要区别是:

  • 2 根本不要求持有人是一个实体。

  • #2 中的持有者可以是映射到另一个表上的实体。
  • 如果 #2 返回实体,则它们处于新状态(这可能是个问题,也可能不是)。

关于java - 使用 hibernate 获得更少的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2560637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com