簡體   English   中英

休眠-自定義ID生成

[英]Hibernate - Custom Id Generation

我將實體持久存儲到mysql數據庫。 我的要求是將ID存儲為BR01,BR02等,而不是存儲為1,2等。

我如何將ID存儲為BR01,BR02等。

我知道mysql數據庫不支持序列。

我的實體類如下:

package com.kabira.hrm.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
@Entity
@Table(name="branch")
public class Branch
{
    private Long id;
    private String country;
    private String state;
    private String city;
    private String address;
    private String phoneNumber;

    @Id
    @GeneratedValue 
    public Long getId()
    {
        return id;
    }
    public void setId(Long id)
    {
        this.id = id;
    }
    public String getCountry()
    {
        return country;
    }
    public void setCountry(String country)
    {
        this.country = country;
    }
    public String getState()
    {
        return state;
    }
    public void setState(String state)
    {
        this.state = state;
    }
    public String getCity()
    {
        return city;
    }
    public void setCity(String city)
    {
        this.city = city;
    }
    public String getAddress()
    {
        return address;
    }
    public void setAddress(String address)
    {
        this.address = address;
    }
    public String getPhoneNumber()
    {
        return phoneNumber;
    }
    public void setPhoneNumber(String phoneNumber)
    {
        this.phoneNumber = phoneNumber;
    }
    @Override
    public String toString()
    {
        return "Branch [id=" + id + "]";
    }

}

您可以擴展org.hibernate.id.enhanced.SequenceStyleGenerator並將其與@GenericGenerator批注一起使用。

您可能想檢查出這樣的解決方案。 Hibernate:如何使用注釋指定自定義序列生成器的類名? 這樣,您就可以創建自己的密鑰生成器。

編寫自定義生成器類,並在其中放置邏輯以從db獲取最大id,然后您將解析該id中的數字,並將該數字轉換為整數,然后遞增該數字,然后再次與所需的前綴連接並返回串聯的值。

在這里寫下這個邏輯

import org.hibernate.id.IdentifierGenerator;

public class MyGenerator implements IdentifierGenerator {@
 Override
    public Serializable generate(SessionImplementor session, Object object){
    // your logic comes here.
    }

 }

暫無
暫無

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

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