如何在休眠和弹簧中以这种格式生成订单号ORD000001
请帮我生成上面的数字。我尝试了各种方法来生成这个序列号但没有解决方案效果很好。
答案 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);
}