2016-11-20 16 views
0

如何防止某人創建實體並將其設置爲ID?我想推遲到數據庫自動增量,併發生如果它發生409錯誤。我正在使用數據庫自​​動增量中的主鍵@GeneratedValue(strategy = GenerationType.IDENTITY)和@GeneratedValue(strategy = GenerationType.AUTO),但id的設置永遠不會標記爲問題,並將覆蓋我的自動增量方案mysql數據庫。防止用戶設置JPA/Hibernate實體的ID

回答

0

嗨,也許你只能對ID的吸氣劑,但我不知道休眠/ JPA

+0

是的,這可能會工作,但我希望配置Hibernate –

+0

對@ Id's(Hibernate,JPA,field access)使用'@GeneratedValue'時適用 – garfield

1

一兩件事你可以做的是:讓你的id property and its setter method private,這不會讓用戶訪問您的對象setId方法,

但是,由於Hibernate使用set方法初始化您正在從數據庫中讀取的實體,因此可以使用反射來訪問此方法。所以你不必擔心改變任何其他的東西。

+0

Thanks Vimal。我試圖爲單元測試重新創建一個409錯誤。是否曾經有過將id設置爲一個值並創建實體會觸發該值的情況?我已經讀過,這可能會觸發409錯誤,但我似乎無法讓它發生? –

+0

我希望有一個可以做到這一點的@GeneratedValue的配置,但AUTO和IDENTITY似乎允許在實體上設置id。當我使用專用setter或者完全移除setter來限制對id的設置時,我得到了400。 –

+0

對不起,我不認爲這是一個很好的問題。我道歉。 –