2017-07-27 3 views
1

データベースに保存する前にジェネレータIDを取得する方法は何ですか?私は多くの検索をしましたが、問題を解決できます。私の問題はuse 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; 
    } 
} 

または、他の方法で休止状態ジェネレータを使用する方法はありますか?このように:

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

あなたは_before save_とはどういう意味ですか??? –

+0

トランザクションが保存されない限り、自動生成されたIDは使用できません。 –

+0

@RavinderReddy最初のステップ:ジェネレータIDを取得します.2番目のステップ:テストをデータベースに保存します。 –

答えて

0

現在のテーブルのアイデンティティを取得するための解決策の一つ、あなたはすでに休止状態を使用しているので、あなたのコード行を使用することができます。

session.CreateSqlQuery("SELECT `AUTO_INCREMENT` " + 
"FROM INFORMATION_SCHEMA.TABLES " + 
"WHERE TABLE_SCHEMA = 'Your_DB_NAME' "+ 
"AND TABLE_NAME = 'Test' ").uniqueResult(); 
関連する問題