如何像 hibernate long 这样生成字符串 id:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Id
private String id
我的意思是,我想获取“1”、“2”、“3”等字符串值。
最佳答案
@GenerateValue(strategy = GenerationType.IDENTITY)
不能与 String 类型一起使用。所以,如果你想使用String作为ID,你必须手动分配它。
一个可能的解决方案是使用自定义 ID 生成器:
@Id
@GenericGenerator(name = "sequence_id", strategy = "com.xyz.IdGenerator")
@GeneratedValue(generator = "sequence_id")
@Column(name="Id")
private String Id;
Id 生成器类:
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;
}
}
关于java - 如何在hibernate中生成像long这样的字符串id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56211382/