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

R2DBC映射到数据库中表之间的do关系

闻人宜
2023-03-14

如何在spring数据R2DBC中使用映射,以获取具有接收/发送到数据库的关系的映射表/实体?使用r2dbcCustomConversions、@WritingConverter和@ReadingConverter。有人可以给予。一些实例谢谢

共有1个答案

颛孙英勋
2023-03-14

也许lc-spring-data-r2dbc可以帮助您,它支持加载和保存具有关系的实体。

例如,您可以这样声明链接:

@Table
public class TableWithForeignKey {
  ...
  @ForeignKey(optional = false)
  private LinkedTable myLink;
  ...
}

@Table
public class LinkedTable {
  ...
  @ForeignTable(joinkey = "myLink")
  private List<TableWithForeignKey> links;
  ...
}

当您希望映射链接时,可以使用延迟加载或select with join。

如果您使用Spring存储库的方法findBy...(findById, findAll...),则只会加载存储库的表。在这种情况下,您可以使用延迟加载。为此,您需要声明一个方法,使用默认正文,您的方法将自动实现:

  public Flux<TableWithForeignKey> lazyGetLinks() {
    return null; // will be implemented
  }

另一种方法是直接在请求中进行连接。目前不支持在存储库中自动进行连接(如JPA中的@Entigraph),但您可以实现如下方法:

public interface MyRepository extends LcR2dbcRepository<LinkedTable, Long> {
  
  default Flux<LinkedTable> findAllAndJoin() {
    SelectQuery.from(LinkedTable.class, "root") // SELECT FROM LinkedTable AS root
      .join("root", "links", "link")            // JOIN root.links AS link
      .execute(getLcClient());                  // execute the select and map entities
  }

}

结果将是所有LinkedTable实例,以及从数据库加载的链接列表。

 类似资料:
  • 我使用的是Spring数据r2dbc,它不支持多对多映射。 表格:- 通常,一个用户可以有多个映射。 Sql查询, 从user u、user\u role\u mapping urm、user\u role ur中选择*其中u.user\u id=:userId和u.org\u id=:orgId和u.user\u id=urm。用户id和ur。role\u id=urm。角色\u id 这里,我

  • 问题内容: 我有一个表,其记录表示某些对象。为了简单起见,我将假定该表只有一列,这是唯一的。现在,我需要一种方法来存储该表中对象的组合。组合必须是唯一的,但可以是任意长度。例如,如果我有s 我想存储以下组合: 不需要订购。我当前的实现是要有一个将s映射到s的表。因此,每个组合都会收到一个唯一的ID: 这是上面示例的前两个组合的映射。问题在于,查找特定组合的的查询似乎非常复杂。该表的两个主要使用方案

  • 主键:Rev/Exp ID 这是我的模型的一个示例: 这是DBContext:公共类AppDbContext:标识符DbContext{公共AppDbContext(DbContextOptions选项): base(选项){} 以下是控制器中的创建操作: 最后,创建视图: 我的问题是如何关联用户和他们输入的数据?因此,Rev或Exp中的记录必须有一列,其中包含输入该数据的用户的ID,以便捕获这些

  • 注意 当前章节中涉及的配置一般适用于关系数据库。这里展示的扩展方法在你安装了关系数据库提供程序之后就能获得(由Microsoft.EntityFrmeworkCore.Relational 程序包共享)。 表映射用于标识应该从数据库查询或写入哪些表数据。 惯例 按照惯例,一旦在派生的上下文中通过 DbSet<TEntity> 属性暴露了实体,该实体就会被设置为映射到与该属性同名的数据表上。如果给定

  • 嗨,到目前为止,我已经能够在简单的类之间进行映射了。现在我必须在接口之间进行映射。假设我有两个接口,其中许多类实现了这些接口。由于我没有了解如何做,我已经映射到特定类型的接口a。现在我需要做反向映射,其中属性可能在子类中,如何在这种情况下做反向映射。我尝试了@ inheritaninverseconfigurationin标签,但没有成功。< br >如果我能得到一些代码片段来理解,而不是阅读描述

  • 我正在将应用程序从一个服务器迁移到另一个服务器。根据这个应用程序的连接字符串,它正在接触不同的数据库。这意味着DB1中的视图查询将触及DB2中的表。因此,在迁移这个应用程序时,我经常看到“数据库不可用”的错误链,每次我看到这样的错误,我必须迁移特定的数据库。 我想知道,既然我们有ER图来了解数据库中表之间的关系,那么在SQL server中是否有任何方法来了解服务器中不同数据库之间的关系/链接?有