Devloper
Devloper

Reputation: 120

Hibernate - Custom Id Generation

I am persisting entity to mysql database. my requirement is to store id as BR01 , BR02 ,... etc. instead of storing as 1,2,.. etc.

how can i store id as BR01,BR02,.. etc?

I know sequence is not supported in mysql database.

my entity class is as follows :

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 + "]";
    }

}

Upvotes: 1

Views: 1646

Answers (3)

Pankaj Saboo
Pankaj Saboo

Reputation: 1185

Write custom generator class and put the logic there to fetch max id from db and you would parse number from that id and convert that number into an integer and make increment to that number and again concat with your required prefix and return concatenated value.

write this logic here

import org.hibernate.id.IdentifierGenerator;

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

 }

Upvotes: 0

Sainik Kumar Singhal
Sainik Kumar Singhal

Reputation: 811

You can extend org.hibernate.id.enhanced.SequenceStyleGenerator and use it with annotations @GenericGenerator.

Upvotes: 1

Dale
Dale

Reputation: 1628

You may want to check out a solution like this. Hibernate: How specify custom sequence generator class name using annotations? This way you make your own key generator.

Upvotes: 0

Related Questions