eager-loading 相关问题

预先加载是一种在同一请求中加载某个类的对象和多个命名关联的方法。

通过多个选择进行急切获取,但没有 FetchType.EAGER 注释

我想在某些用例中急切地获取一对多列表(但并非总是如此,所以 @OneToMany(fetch=FetchType.EAGER) 不会很好),并且我也希望 JPA 使用单独的SQL 选择获取那些 Lis...

回答 2 投票 0

如何将 eager_load 和 select 一起使用?

我试图使用 eager_load 仅选择某些列,但我面临着它取消我的“选择”的问题。 模型: 课程时间表 < ActiveRecord::Base belongs_to :timeline_category,

回答 3 投票 0

eager_load=true有什么影响?

我需要知道为什么在非生产环境中 eager_load 首选为 false?我听说过的一个论点是 eager_load eager 加载了我体内的大部分 Rails 和应用程序......

回答 2 投票 0

Spring FetchType.Lazy 和投影抛出错误

我试图将我所有的数据库变成延迟加载,因为它太大了(像数百万), 为了不加载所有内容,我应用了惰性,并开始进行 Spring Projections, 然后,在项目中...

回答 1 投票 0

EF Core 8:从祖父母那里得到孙子

我正在编写一个应用程序,其中包含具有以下导航属性的模型类 测试报告 => 学生 => 课程表 => 测试 该关系是一对多的

回答 1 投票 0

Laravel 路由模型绑定与排序的预加载?

我有产品也有评论。该评论可以投票,并且评论也可以有子评论。评论通过预先加载 $with 来加载,该 $with 在产品模型中定义...

回答 2 投票 0

C# Entity Framework Core 3.1 显式加载多个关系导致笛卡尔爆炸,如何拆分查询?

我在生产环境中遇到了扩展问题。少量记录处理良好。但体积越大,花费的时间就越长。这些课程只是为了说明这一点。 聚会{...

回答 1 投票 0

在实体上显式加载多个引用/集合

考虑以下实体模型: 公开课家长 { 公共虚拟 FirstChild FirstChild { 获取;放; } 公共虚拟 SecondChild SecondChild { 获取;放; } } 在我的代码中,我已经加载了...

回答 2 投票 0

laravel 急切加载函数不返回关系,但单独工作

我有以下型号 我有以下型号 <?php namespace App\Models\Masters\System; class UserActivationCode extends \Illuminate\Database\Eloquent\Model { public $table = "user_activation_codes"; } <?php namespace App\Models; use App\Models\Model; use Modules\Requests\Models\EmploymentLeaveType; use App\Models\Masters\System\UserActivationCode; class EmployeeEmployment extends \Illuminate\Database\Eloquent\Model { public $table = "employee_employments"; public function employeeProfileScore() { return $this->hasOne('\App\Models\EmployeeProfileScore', 'employee_id', 'employee_id'); } public function test() { return $this->hasMany(UserActivationCode::class, 'employment_id', 'id'); } } 当我运行以下命令时 $emp = \App\Models\EmployeeEmployment::with('test')->whereIn('id', ["4228e839-5ce3-4798-acfd-68958fed3b82"])->first(); $emp->test; 结果是空数组 但是当我运行时不使用它会返回数据 $emp = \App\Models\EmployeeEmployment::whereIn('id', ["4228e839-5ce3-4798-acfd-68958fed3b82"])->first(); $emp->test; 我从模型中删除了所有内容,将其转换为基本状态 在查询中,我运行以下查询,我无法理解为什么雇佣_id 为 0 检查您的测试关系是如何加载的。外键与数据库中设置的内容之间是否可能不匹配?确保 user_activation_codes 表中的雇佣_id 和 id 在数据库中具有相同的类型(如果您使用 UUID,则均为 UUID)。

回答 1 投票 0

2024 年 Rails 片段缓存与急切加载

我正在开发一个成熟的 Rails 应用程序来加速我们的主索引页面,该页面的渲染时间为 5-6 秒。我最近注意到一些 N+1 没有被 Bullet 拾取,所以我实现了新的

回答 2 投票 0

Laravel Eloquent WHEREIN 查询 [已关闭]

我是 Laravel 框架的初学者。在本例中,我使用了预加载。另外,我已将数据分配给名为 $articles 的变量。之后,我使用 WHERE IN Condition 来获取 rel...

回答 1 投票 0

如何从 ROR 中的 eager_loading 中排除 lib/ 文件夹内的特定文件

在 lib/ 文件夹内的 Rails 应用程序中,我有很多文件,我需要从该 lib 文件夹中排除一个文件以成为 eager_loading ,其余文件应该进入 eager_loading 。 我怎样才能实现...

回答 1 投票 0

如何在 Quarkus 应用程序中急切地初始化 CDI bean

有quarkus 1.2.1 + jakarta cdi 2.0.2的项目。 我添加了 SQS 消息的侦听器。 问题是所有的bean都是默认延迟创建的,这显然不适合...

回答 1 投票 0

如何在 Laravel 中急切加载自定义属性?

我制作了一个带有自定义属性 gpp_per_sqm 的资产模型,计算并汇总所有资产单位的每平方米 gpp。其他情况下不需要受保护的 $appends。我添加它是为了尝试...

回答 1 投票 0

如何防止数组中产生附加条件的 n+1 问题?

在包含查询的数组上使用条件时,我面临 n+1 问题。 以下是下表: 雷姆斯 |编号| |姓名| 1 AAA 2 BB rem_相关性 |编号| |rem_id| |姓名| |已删除| |

回答 1 投票 0

带有二级缓存的 Hibernate 6.2+ 会忽略急切加载

我有一个使用 hibernate 6.2.13.Final 和 jcache/ehcache 进行二级缓存的项目: org.hibernate.orm 休眠核心 我有一个使用 hibernate 6.2.13.Final 和 jcache/ehcache 进行二级缓存的项目: <dependency> <groupId>org.hibernate.orm</groupId> <artifactId>hibernate-core</artifactId> <version>6.2.13.Final</version> </dependency> <dependency> <groupId>org.hibernate.orm</groupId> <artifactId>hibernate-envers</artifactId> <version>6.2.13.Final</version> </dependency> <!-- API for 2nd Level Cache --> <dependency> <groupId>org.hibernate.orm</groupId> <artifactId>hibernate-jcache</artifactId> <version>6.2.13.Final</version> </dependency> <!-- Implementation for 2nd Level Cache --> <dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> <classifier>jakarta</classifier> <version>3.10.8</version> </dependency> 我有带有 @ManyToOne(fetch = FetchType.EAGER) 和缓存的实体。我知道预加载是一种反模式,但软件很复杂,目前无法更改。 @Entity @Cacheable @Audited @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class FooType { @Id @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "uuid2") @Size(max = 36) @Column(length = 36) @UserInterface(showInForm = false, showInList = false) @Comment("Primary key") private String id; @Version @NotNull @UserInterface(showInForm = false, showInList = false) @Comment("Version column for optimistic locking") private int version; public String getId() { return id; } public void setId(String id) { this.id = id; } public int getVersion() { return version; } public void setVersion(int version) { this.version = version; } } @Entity @Cacheable @Audited @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class Foo { @Id @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "uuid2") @Size(max = 36) @Column(length = 36) @UserInterface(showInForm = false, showInList = false) @Comment("Primary key") private String id; @Version @NotNull @UserInterface(showInForm = false, showInList = false) @Comment("Version column for optimistic locking") private int version; @ManyToOne(fetch = FetchType.EAGER) private FooType; public String getId() { return id; } public void setId(String id) { this.id = id; } public int getVersion() { return version; } public void setVersion(int version) { this.version = version; } public FooType getFooType() { return fooType; } public void setFooType(FooType fooType) { this.fooType = fooType; } } 当我查询条目时,一切都很好。 entityManager.find(Foo.class, id); 但是,当我查询多个条目时,FooType在Foo的结果中延迟加载,并且是一个休眠代理对象。 final TypedQuery<Foo> fooQuery = entityManager.createQuery("FROM Foo f", Foo.class); final List<Foo> fooList = fooQuery.getResultList(); Hibernate 6.2 并禁用二级缓存 当我停用二级缓存时,结果会按预期急切加载。 <property name="hibernate.cache.use_second_level_cache" value="false" /> Hibernate 6.1 并启用二级缓存 当我将 Hibernate 版本更改为 6.1.7.Final 并启用二级缓存时,结果按预期急切加载。 休眠 6.4.0.CR1 与 6.2 相同的问题 我不确定这是一个错误还是缓存的预期变化?但是,我在 hibernate 6.2 迁移指南中没有找到任何有关此内容的信息。我该如何处理这个问题,我需要在启用二级缓存的情况下急切加载结果。 我在Hibernate论坛得到了答案: 仅仅因为您看到为关联设置了代理对象并不意味着它是延迟加载的。有时 Hibernate ORM 出于其他原因需要使用代理,但会确保对象作为加载操作的一部分进行初始化。 Hibernate 论坛中的Thread,其中包含 Jackson 的提示。

回答 1 投票 0

Laravel - N+1,多重关系

我想优化我的应用程序。多个模型中有很多相似的关系,但我找不到减少查询量的方法。 例子: 类用户扩展模型{ $with = ['我...

回答 1 投票 0

从枚举类型转换列中预加载关系会返回错误

我创建了 RoleEnum 并将其投射到用户模型中。被转换为 RoleEnum 的 role_id 也与角色模型有关系。 我创建了 RoleEnum 并将其投射到用户模型中。被转换为 RoleEnum 的 role_id 也与角色模型有关系。 <?php namespace App\Enums; enum RoleEnum:int { case SYSTEM_ADMINISTRATOR = 1; case ADMINISTRATOR = 2; case SAMPLE_ROLE_ONE = 3; case SAMPLE_ROLE_TWO = 4; case SAMPLE_ROLE_THREE = 5; case SAMPLE_ROLE_FOUR = 6; } 用户模型 protected $casts = [ 'email_verified_at' => 'datetime', 'password' => 'hashed', 'role_id' => RoleEnum::class, ]; public function role(): BelongsTo { return $this->belongsTo(Role::class); } 在我的控制器索引中 $users = User::with('role') ->paginate() ->withQueryString(); 我收到此错误,它指向 paginate()。它必须使用类而不是值。 Object of class App\Enums\RoleEnum could not be converted to string 编辑:经过进一步测试,我发现该错误是由急切加载角色(Enum 强制转换列)引起的,而不是由 paginate() 引起的。我可以简单地删除枚举铸造,一切都会正常工作。但是有没有一种方法可以在转换 Enum 的同时仍然使用预加载? 我建议您创建一个角色表,其中包含字段 id、name、slug、level 迁移应该如下所示 public function up(): void { Schema::create('roles', function (Blueprint $table) { $table->id(); $table->string('slug')->unique(); $table->string('name'); $table->unsignedTinyInteger('level'); $table->timestamps(); $table->softDeletes(); }); } 和用户表 public function up(): void { Schema::create('users', function (Blueprint $table) { $table->bigIncrements('id'); $table->unsignedTinyInteger('role_id')->index(); $table->string('username')->unique(); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); $table->softDeletes(); }); } 您可以自由地个性化一切 然后,必须根据您的需要来管理模型上的关系,在这些示例中,用户只有一个角色,我设置级别字段以便稍后能够对您的角色进行优先级排序。 在角色模型中,放置这些线 public function users(){ return $this->hasMany(User::class); } 在用户模型中,放置这些行 public function role(){ return $this->belongsTo(Role::class); } 那么你可以做 $users = User::with('role') ->paginate(10) ->withQueryString();

回答 1 投票 0

单例模式中急切初始化和惰性初始化的区别

我发现两种不同的方法来实现单例模式,它们是延迟初始化和急切初始化。代码是: 公共类 EagerSingleton { 私人静态最终 EagerSingl...

回答 1 投票 0

ActiveRecord 中的自定义联接的预加载

我有一桌有很多预订的餐厅。现在我想查询所有餐厅,如果他们有 2 人的预订,则应该预加载这些关联。万一...

回答 3 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.