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

将表记录映射到JPA实体

连俊智
2023-03-14

我在两个不同的依赖项DependencyA和DependencyB中有两个类TableNameA和TableNameB,它们表示表table_name_a和table_name_b,字段如下所述。

@Entity
@Table(name = "table_name_a")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TableNameA{
  @Id
  private int field;
  private int fieldNameP;
  private int fieldNameQ;

} 


@Data
@AllArgsConstructor
@NoArgsConstructor
public class TableNameB{
  @Column(name = "field_name_r")
  private int fieldNameR;
  @Column(name = "field_name_s")
  private int fieldNameS;

} 
log.info(dslContext.selectFrom(TableNameA.TABLE_NAME_A)
                 .limit(4)
                 .fetch()
                 .into(dependencyA.TableNameA.class).toString());
log.info(dslContext.selectFrom(TableNameB.TABLE_NAME_B)
                 .limit(4)
                 .fetch()
                 .into(dependencyB.TableNameB.class).toString());

如上所述,我正在使用jooq,并且我想将table_name_a和table_name_b记录映射到TableNameA和TableNameB类中,但是在TableNameA的对象中,只有“FIELD”成员变量被正确映射,其余成员变量的fieldNameP、fieldNameP被映射到null,而不是表和TableNameB列中的相应值被正确映射。

这里的问题是成员变量的fieldNameP,fieldNameP映射到null而不是表列中的相应值

还有一个情况,我不能编辑TableNameA和TableNameB类,相反,如果我没有找到解决方案,我必须编写自己的模型来映射。

共有1个答案

张和颂
2023-03-14

您所描述的是Jooq中的一个已知问题:https://github.com/jooq/jooq/issues/4586。此外,应该映射没有@column注释的字段,除非它们被注释为@transient。正确映射字段的原因是它有@id注释。

就目前而言,我建议您投票支持链接的GitHub问题,以便该问题得到关注,并可以适当地优先考虑。

 类似资料:
  • 快速总结我想要实现的目标。请给出实施或设计建议:) 我有两个表:用户,图像。在UserDO中,我希望保留一组所有用户的图像,以及单个图像,即用户的肖像(在我的示例中,该组将包括肖像): 在ImageDO中,我有一个userid作为外键来记录哪个用户上传了图像。但是它没有布尔值,因为认为一个用户可能会上传许多图像,但只有一个是肖像。 有什么方法可以实现这一点吗?或者我需要维护另一个表(例如,Port

  • 主要内容:列表映射实例,程序输出结果,以下是纠正/补充内容:列表(List)是一个用于基于索引插入和删除元素的接口。当需要以用户定义的顺序检索元素时,可以使用它。 列表映射实例 在这个例子中,我们将一个对象嵌入到一个实体类中,并将其定义为一个集合类型 - 。 这个例子包含以下步骤 - 第1步: 在包下创建一个实体类,这个类包含员工, 和嵌入对象(员工地址)。注解 表示嵌入对象。 文件:Employee.java 的代码如下所示 - 第2步: 在包下创建一个

  • 我使用的是MySQL 5.7,我想将具有一对多关系的查询映射到其代表性记录的列表。 MySQL不支持多集,JSON仿真也不起作用,因为它无法在两个层次上引用别名。 我想知道是否有另一种方法可以让我尝试在一个查询中映射多个关系。

  • 我试图找到一种方法,在JPQL查询中放置一个计算字段,以映射到Spring Boot中的实体。 我刚才的例子列出了一个静态数字,但我打算将来也将其用于聚合。 我在尝试运行查询时不断收到以下消息: “类[Ljava.lang.Object;不能强制转换为类com.School([Ljava.lang.Object;位于加载器“bootstrap”的模块java.base中;com.School位于加

  • 我有一个Spring批处理应用程序,需要从4个表中进行选择。问题是,我无法使用关系,将编写Enricher来选择完整数据。 目前我有几个问题: 是否可以以简单的方式从JpaRepository映射非实体(POJO)。我看到了的示例。我正在寻找自动映射(也许是JPA,而不是Spring Data)。我可以用结果精确地制作列名,但它不起作用。 将POJO标记为实体没问题,但有问题。实体需要。这对我来说

  • 我正在尝试使用AutoMapper在LLBLGen实体和DTO之间创建映射。 我的DTO如下所示: ParentEntity包含一个与DTO列表同名的ChildCollection和一个Id(需要忽略其他LLBL字段)。因此,当ParentEntity映射到父d to时,它也应该将ChildCollection映射到一个子列表。 这就是我到目前为止得到的: 这会导致Id被映射,但List的计数为0