如何在保存到数据库之前获取生成器ID?我经常搜索,但它可以解决我的问题。我的问题是使用spring mvc和hibernate以及mysql。
import javax.persistence.*;
@Entity
@Table(name = "Test")
public class Test {
private Integer id;
private String name;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.TABLE,generator = "Test_gen")
@TableGenerator(name = "Test_gen",table = "SerialNum",pkColumnName =
"tableName",valueColumnName = "tableValue",pkColumnValue = "Test")
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
或者如何以其他方式使用hibernate生成器?像这样:
public static long getGeneratorId(String entityName){
return Hibernate.generatorId();
}
答案 0 :(得分:0)
这里有一个获取当前表Identity的解决方案,因为你已经在使用Hibernate,你可以使用这行代码:
session.CreateSqlQuery( "SELECT `AUTO_INCREMENT` " +
"FROM INFORMATION_SCHEMA.TABLES " +
"WHERE TABLE_SCHEMA = 'Your_DB_NAME' "+
"AND TABLE_NAME = 'Test' ").uniqueResult();