如何在休眠和弹簧

时间:2016-05-17 10:06:48

标签: java spring hibernate

如何在休眠和弹簧中以这种格式生成订单号ORD000001

请帮我生成上面的数字。我尝试了各种方法来生成这个序列号但没有解决方案效果很好。

2 个答案:

答案 0 :(得分:2)

试试这个。

import org.hibernate.id.IdentifierGenerator;
import org.hibernate.engine.SessionImplementor;
import org.hibernate.HibernateException;

import java.io.Serializable;
import java.security.SecureRandom;
import java.util.UUID;

public class RandomIdentifierGenerator implements IdentifierGenerator {

  private final static String label = "ORD";
  private final static SecureRandom sr = new SecureRandom();

  public Serializable generate(SessionImplementor sessionImplementor, Object o) throws HibernateException {
    long val = sr.nextLong();
    return label + Long.toString(Math.abs(val), Character.MAX_RADIX);
  }
}

答案 1 :(得分:1)

我认为你真正需要的是以一些更多功能的方式解析订单生成,然后我不会去生成一个randomID的方法我将使用你的订单的真实ID,这将是顺序和格式化给予结果如你所愿。在代码中会是这样的:

Class Order

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;

@Transient
public String getOrderIdBusiness(){
    DecimalFormat myFormatter = new DecimalFormat("ORD000000");
    return myFormatter.format(id);
}