[英]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.AUTO
, strategy = GenerationType.IDENTITY
, strategy = GenerationType.SEQUENCE
, strategy = 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.