我想在JPA中生成自定义ID,它必须是表的主键。有很多例子可以创建自定义ID使用像Hibernate这样 我想相同的实现,但在JPA.The ID必须是字母数字像STAND0001
STAND0001
谢谢。
您可以这样使用GenericGenerator:
GenericGenerator
@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之前添加前缀,您可以根据自己的喜好进行设置):
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; } }