簡體   English   中英

休眠@Id @GeneratedValue與非自動增量,我沒有序列

[英]hibernate @Id @GeneratedValue with non auto-increment and i dont have sequence

我遇到的情況是,我嘗試使用ID取決於最大id值來保留實體,例如,新的實體id將為MAX(id)+1。 現在我嘗試使用JPA來保留該實體

@Entity
@Table(name = "product")
public class ProductDetails {

    @Id
    @GeneratedValue
    private String id;

我使用了strategy = GenerationType.AUTOstrategy = GenerationType.IDENTITYstrategy = GenerationType.SEQUENCEstrategy = GenerationType.TABLE ,它們都不起作用,所以我認為我可以通過選擇最大id然后+1並使用該值來解決(我沒有嘗試)我要的是什么,有沒有辦法通過JPA或Hibernate處理這種情況。 注意:id列不是自動遞增的,並且數據庫沒有序列。

不要使用String作為主鍵。 如果您需要像“ ABC123”這樣的ID,請選擇2個ID列。 一個作為id(int)PK,第二個作為display_id(String)。 您可以使用觸發器在數據庫級別自動生成display_id。

如果將String用作ID的類型,則不應使用自動遞增,因為String不能遞增,因為它不是數字類型。 只需保留@Id並添加@GeneratedValue(generator = "uuid") -即可。 另外,您可以添加@GenericGenerator(name = "uuid", strategy = "uuid2")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM