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

当@列未用于所有成员时,JPA注释的POJO未正确映射

何安宜
2023-03-14

我有一个自定义的POJO,我正在其上使用JOOQ.fetchInto(TestClassDto.class)映射数据库记录。我的POJO中的大多数字段与数据库表的列完全相似。然而,有一些是不同的,因此,我添加了java持久性,并使用@Column在我的POJO上显式映射这些列,如这里所述。

不幸的是,如果我在几个特定字段上使用@Column,这是行不通的。只有用列注释的字段被映射,其余字段被忽略并设置为Null,即使它们类似于表列名,并且应该隐式映射。

如果我遗漏了什么,你能给我一个提示吗?

样本POJO:

@Getter
@Setter
public class TestClassDto {

    @Column(name = "field_AB_XYZ") // explicit mapping is required, thus need @Column
    private Long myfieldAB;

    /* Here, mapping could be implicitly done without using @Column because 
    ** database column name and POJO property is same but it stays empty if I 
    ** ignore @Column */
    @Column(name = "hello_world") 
    private Long helloWorld;

}

最后,如果我从POJO的属性中完全删除@ColzohelloWorld属性被填充(隐式),但myfield dAb保持NULL(因为没有按预期找到映射)。

以下是示例查询:

dslContext.select()
      .from(SOMETHING)
      .where(SOMETHING.NAME.eq("Something"))
      .fetchInto(TestClassDto.class)

共有1个答案

商风华
2023-03-14

从jOOQ 3.15开始,您要么需要注释

  • 你的所有属性…
  • 没有任何属性

…带有注释。有一个待定的功能请求,它将更紧密地模仿JPA,并使某些属性的注释可选:https://github.com/jOOQ/jOOQ/issues/4586.

同时,您可以为列添加辅助getter/setter,而不是使用这些JPA注释:

public void setFieldAbXyz(Long v) {
    this.myfieldAB = v;
}

public Long getFieldAbXyz() {
    return myfieldAB;
}
 类似资料:
  • 我试图用时间序列创建一个简单的折线图。问题是androidplot没有正确显示数组中的时间值,即日期已关闭。日期应为: 2001年1月1日、2001年2月1日、2001年3月1日、2001年4月1日、2001年5月1日 但我得到了: 2001年1月1日、2001年1月30日、2001年3月1日、2001年3月31日、2001年5月1日 您可以从格式化的调试信息中看到androidplot解释了什么

  • 我正在开发一个应用程序,使用: Java 1.7 我想对一些字符串属性使用PostgreSQL文本数据类型。据我所知,在JPA中,要使用PostgreSQL中的文本,这应该是正确的注释: 当我像这样注释我的实体时,我遇到的错误如下所示:http://www.shredzone.de/cilla/page/299/string-lobs-on-postgresql-with-hibernate-36

  • 我想做一个命令,告诉我机器人所在的服务器中的用户总数。我搜索了一下怎么做,发现是这样的: 但当我使用它时,机器人告诉我它只为一个用户服务。

  • 我有麻烦映射一个嵌套dto字段正确与MapStruct。我有几个DTO: 具有相应的映射器 到目前为止,一切工作都很好,生成的代码自动连接其他需要的映射器来正确地构建DTO。例如生成的仪器映射器实现 现在,当我试图创建一个包含嵌套工具dto的映射器时遇到了麻烦。映射器应使用instrumentMapper正确创建所需的dto。DTO: 映射器: 生成的代码: 现在media mapper得到了很好

  • 问题内容: 一个运行了几个月的应用程序已经停止使用已经有几个月历史的JPA 批注。在进行集成测试时,我看到许多“ ”类型错误。 我不清楚这里出了什么问题。 我没有文件,因为我正在使用hibernate实体管理器。由于我仅使用注释,因此我的实体没有.hbm.xml文件。我的文件很小,可以正常保存。 我显然丢失了一些东西,但不能动弹。 我正在使用hibernate批注3.2.1,hibernate-e

  • 当使用matplotlibs函数时,我遇到了一个奇怪的行为。 我想给一个文件的绘图添加注释,,其中包含: 使用以下代码: 这让我得到了下面这个看起来很奇怪的图,到处都是轴标签,注释在错误的地方(相对于我的数据): 然而,当我使用 而不是 所以我想在一个例子中,使用以前的轴(也用于制作注释),但这会给我一个警告,而在另一种情况下,它会生成一个新的轴实例(因此没有警告),但也会生成一个带有两个重叠轴的