[英]How to generate string id in hibernate like long?
How to generate string id like hibernate long like this: 如何生成像hibernate这样的字符串id:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Id
private String id
I mean, I want to get String values like "1", "2", "3", etc.. 我的意思是,我想得到像“1”,“2”,“3”等字符串值。
@GeneratedValue(strategy = GenerationType.IDENTITY)
cannot be used with String type. @GeneratedValue(strategy = GenerationType.IDENTITY)
不能与String类型一起使用。 So, if you want to use String as ID, you have to assign it manually. 因此,如果要将String用作ID,则必须手动分配。
A possible solution is to have custom id generator: 可能的解决方案是使用自定义ID生成器:
@Id
@GenericGenerator(name = "sequence_id", strategy = "com.xyz.IdGenerator")
@GeneratedValue(generator = "sequence_id")
@Column(name="Id")
private String Id;
Id Generator class: Id Generator类:
package com.xyz;
import java.io.Serializable;
import java.sql.*;
import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.id.IdentifierGenerator;
public class IdGenerator implements IdentifierGenerator{
@Override
public Serializable generate(SessionImplementor session, Object object)
throws HibernateException {
Connection connection = session.connection();
try {
Statement statement=connection.createStatement();
ResultSet rs=statement.executeQuery("select count(Id) from dbo.TableName");
if(rs.next())
{
int id=rs.getInt(1);
return new Integer(id).toString();
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.