日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java9中使用jpa,jpa – eclipselink在Java 9上使用final字段进行静态编织

發布時間:2025/3/11 java 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java9中使用jpa,jpa – eclipselink在Java 9上使用final字段进行静态编织 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我有一些JPA注釋字段,如下所示:

@Column(name = "SOME_FIELD", updatable = false, nullable = false)

private final String someField;

當實體插入數據庫時??,這些字段存儲在數據庫中.它們無法進一步更新.對于Java編程語言,可以將這些字段視為final.

使用EclipseLink靜態編織插件,由于某些字節代碼檢測,可能會延遲加載實體.

我不知道JPA中是否正式允許這樣的構造(最終字段),但我喜歡使用它們,因為它們在編譯時強制執行這些字段并不是要更新.

在Java 8中,使用這種結構構建的程序運行良好.但是在Java 9中,當涉及EclipseLink靜態編織時,我得到以下運行時異常:

Caused by: java.lang.IllegalAccessError: Update to non-static final field xxx.yyy.SomeEntity.someField attempted from a different method (_persistence_set) than the initializer method

這樣的錯誤似乎是由于以下JVM規范:

Otherwise, if the field is final, it must be declared in the current

class, and the instruction must occur in an instance initialization

method () of the current class. Otherwise, an IllegalAccessError

is thrown.

因此,我覺得一些編織工具需要一些更新才能實現這個JVM規范. EclipseLink靜態編織工具似乎就是其中之一.

問題:

> JPA中允許使用此處提供的最終字段構造嗎?

>是否有一個JDK 9選項來禁止檢查最終字段分配,而不僅僅是在類的實例初始化方法()中(作為臨時解決方法)?

編輯:

根據JPA規范,JPA中不允許使用最終字段:

The entity class must not be final. No methods or persistent instance variables of the entity class may be final.

總結

以上是生活随笔為你收集整理的Java9中使用jpa,jpa – eclipselink在Java 9上使用final字段进行静态编织的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。