2017-07-27 83 views
1

如何在保存到数据库之前获取生成器ID?我搜索了很多,但它可以解决我的问题。我的问题是使用spring mvc和hibernate和mysql。如何在保存到数据库之前获取生成器ID?

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 generator?就像这样:

public static long getGeneratorId(String entityName){ 
     return Hibernate.generatorId(); 
} 
+0

你是什么意思_before save_ ??? –

+0

自动生成的ID不会保存,除非事务被保存 –

+0

@RavinderReddy第一步:获取生成器ID,第二步:将测试保存到数据库。 –

回答

0

这里的解决方案来获得当前表身份的一个,因为你已经在使用Hibernate您可以使用此行代码:

session.CreateSqlQuery("SELECT `AUTO_INCREMENT` " + 
"FROM INFORMATION_SCHEMA.TABLES " + 
"WHERE TABLE_SCHEMA = 'Your_DB_NAME' "+ 
"AND TABLE_NAME = 'Test' ").uniqueResult(); 
相关问题