如何在 JPA 中生成自定义 ID [英] How to generate Custom Id in JPA

查看:48
本文介绍了如何在 JPA 中生成自定义 ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在 JPA 中生成自定义 ID,它必须是表的主键.有很多使用 hibernate 创建自定义 ID 的示例,例如 这个我想要相同的实现,但在 JPA.The id 必须是字母数字,如 STAND0001

i want generate Custom Id in JPA it must be primary key of table. there are many examples to create Custom Id using hibernate like this i want same implementation but in JPA.The id must be alphanumeric like STAND0001

谢谢.

推荐答案

你可以像这样使用 GenericGenerator 来做到:

You can do it using GenericGenerator like this :

 @Entity
public class Client {

    @Id
    @GenericGenerator(name = "client_id", strategy = "com.eframe.model.generator.ClientIdGenerator")
    @GeneratedValue(generator = "client_id")  
    @Column(name="client_id")
    private String clientId;
}

和自定义生成器类(会为 ID 添加前缀,你可以让它做你喜欢的):

and the custom generator class (will add prefix to the ID, you can make it do what you like):

public class ClientIdGenerator implements IdentifierGenerator {

@Override
public Serializable generate(SessionImplementor session, Object object)
        throws HibernateException {

    String prefix = "cli";
    Connection connection = session.connection();

    try {
        Statement statement=connection.createStatement();

        ResultSet rs=statement.executeQuery("select count(client_id) as Id from Client");

        if(rs.next())
        {
            int id=rs.getInt(1)+101;
            String generatedId = prefix + new Integer(id).toString();
            return generatedId;
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return null;
}
}

这篇关于如何在 JPA 中生成自定义 ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆