如何在 JPA 中生成自定义 ID [英] How to generate Custom Id in JPA
本文介绍了如何在 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屋!
查看全文