簡體   English   中英

Hibernate:自動遞增的 EmbeddedId

[英]Hibernate: EmbeddedId with auto increment

假設我有一個帶有自動遞增 ID 的簡單實體 Hibernate。

@Entity
@Table(name = "product")
public class Product {
    @Id
    @GeneratedValue(strategy = IDENTITY)
    private Long id;

    private String name;
}

是否可以將id聲明為類型安全變量? 我可以像這樣應用@EmbeddedId

@Entity
@Table(name = "product")
public class Product {
    @EmbeddedId
    private ProductId id;

    private String name;
    
    @Embeddable
    public static class ProductId implements Serializable {
        @GeneratedValue(strategy = IDENTITY)
        private Long id;

        public Long getId() {
            return id;
        }
    }
}

它適用於客戶端生成的 ID,但不適用於數據庫生成的 ID。

有沒有人解決過類似的問題? 有哪些可能的方法?

首先,您需要使用 @Embeddable 注釋 ProductId class,如下所示:

@Embeddable
public static class ProductId implements Serializable {
    private Long id;
    private String name;
}

而且,當您保存實體時,您還需要創建一個具有唯一參數(在您的例子中是“名稱”字段)的 ProductId 實例。

有關更多信息,我建議您在 這里查看

暫無
暫無

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

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