[英]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.