当前位置: 首页 > 知识库问答 >
问题:

可以在TypeORM中使用急切加载而不定义关系吗?

阳建弼
2023-03-14

我想添加创建者字段到我的所有实体的授权目的。以前我有一个OneToOne关系从每个实体到用户实体,但现在我看到它添加了约束到该表,最终用户不能创建一个以上的记录这确实是,但问题是,你必须添加一个相应的字段到用户为每一个实体你创建。数字类型和左连接每次获取用户是获取,但增加了太多的维护负担。所以,在TypeORM中是否有任何内置的解决方案来添加一个字段创建者到我的实体与用户类型,也有选项急切加载它在获取和获取?

class User extends BaseEntity {
    @PrimaryGeneratedColumn()
    id: number; 
}
class Service extends BaseEntity {
    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    creator: User
 
}

共有1个答案

萧升
2023-03-14

您需要对需要Creator的实体进行多对一,但不需要对每个实体的用户进行一对多。TypeOrm多对一留档特别指出“如果你只关心@ManyToOne关系,你可以在相关实体上定义它,而不需要@OneToOne。”

您可以将其设为基类,以保存为每个实体键入的内容:

@Entity()
export class EntityWithCreator extends BaseEntity {
    @ManyToOne(() => User, { eager: true } )
    @JoinColumn()
    creator: User;
}

@Entity()
export class Service extends EntityWithCreator {
    // ...
}
 类似资料:
  • 让CriteriaQuery加载多对一个关系而不明确地告诉它,我遇到了一些麻烦,而且要在查询中复制我的实体注释来使其工作,这似乎很奇怪: 除其他字段外,“我的实体计算机”包含以下关系: @ManyToOne(fetch=FetchType.Eage)@JoinColumn(name=“Employee”,nullable=false)private Employee=Null; 据我所知,当我加载

  • 我很难回答这个雄辩的问题,希望有人能帮助我。 除了author关系外,查询工作正常,当我知道author和author关系都存在时,它返回null。(数据库中没有没有没有作者的书) 以下是相关代码: 我通过选择一个特定的Book(ID#40)验证了该关系是否存在,并分别运行了此查询: 以这种方式加载时,发现作者没有问题。 我一直在使用我的疯狂googl'in技能几个小时试图弄清楚这一点,但到目前为

  • 运行Laravel 6.20.7。我的关系很直接。在我的类上定义: 我可以直接访问关系“线”,如下所示: 这将按预期输出集合: 我想急切地加载关系,将这些“行”整齐地传递到我的视图中,并带有每个“头”。我是这样问的: 但是,快速DD会显示一个空的关系集合。 值得一提的是,我尝试在模型上定义关系的逆关系,但没有成功。

  • 问题内容: 我相信只有两种使用Hibernate加载对象的方法,即延迟加载和一种渴望加载。延迟加载有其自身的优势,它不会加载很多对象,而只是在需要时才加载它们。我还了解到,如果您想强制为一个对象加载所有子代,则只需调用即可。假设我们有以下对象 假设我们的客户在我们的系统中有订单,并且该订单可能不止一个甚至为空。所以我的问题是,在这种情况下始终使用渴望加载会更好吗?我们需要与客户相关的订单的大小或一

  • 我有几个具有惰性一对多关系的实体(为简洁起见省略了逻辑): 在某些情况下(非常罕见),我希望急切地加载A的实例及其所有关联。这样做的原因是,我想对该实例及其子实例整体进行一些修改,然后根据用户输入保存或丢弃它们。 如果我要根据需要加载东西,我必须根据用户请求将实体重新附加到新会话,但它们正在被修改,修改还不应该持久化。 所以我写了这样的东西: 当我尝试访问内容时,我在第 遇到异常: 如果我在条件中

  • 我通过提示检查了它在EclipseLink中的工作情况: 这个链接http://blog.ringerc.id.au/2012/06/jpa2-is-very-inflexible-with-eagerlazy.html暗示通过Hibernate是不可能的,建议手动获取。但是,我无法理解如何通过HQL或标准来实现它,特别是如何获得不在实体上但仅存在于数据库上的child.parent_id列。即避