我有一個自定義 POJO,我正在使用 JOOQ 映射資料庫記錄.fetchInto(TestClassDto.class)。我的 POJO 中的大多數欄位與資料庫表的列完全相似。不過,也有一些是不同的,因此,我添加的Java持久性和使用的@Column描述我的POJO顯式地映射這些列在這里。
不幸的是,如果我在幾個特定欄位上使用 @Column,這將不起作用。僅@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;
}
最后,如果我完全@Column從 POJO 的屬性中洗掉,helloWorld屬性會被填充(隱式)但myfieldAb仍然存在NULL(因為沒有按預期找到映射)。
以下是示例查詢:
dslContext.select()
.from(SOMETHING)
.where(SOMETHING.NAME.eq("Something"))
.fetchInto(TestClassDto.class)
uj5u.com熱心網友回復:
從 jOOQ 3.15 開始,您要么必須注釋
- 你所有的屬性...
- 沒有你的屬性...
...帶有@Column注釋。有一個待處理的功能請求,可以更密切地模仿 JPA,并使@Column某些屬性的注釋成為可選:https : //github.com/jOOQ/jOOQ/issues/4586。
同時,您可以為列添加輔助 getter/setter,而不是使用這些 JPA 注釋:
public void setFieldAbXyz(Long v) {
this.myfieldAB = v;
}
public Long getFieldAbXyz() {
return myfieldAB;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/361870.html
上一篇:休眠錯誤訊息:重繪前保存瞬態實體
下一篇:其余控制器測驗中未執行該請求
