これは、HibernateとPostgreSQLを使用するJavaEE6アプリケーションです。ユーザーはデータベース内で作成され、長IDを生成する@GeneratedValue(strategy = GenerationType.AUTO)
となります。 user_name列の名前の一意性を保証できないため、データベースのuser_id列をログイン領域の名前列(たとえばrequest.login(id.toString(), password)
)として使用しようとしています。ただし、Glassfishv3で組み込みのFORM認証を使用すると、データベースの列がvar charであるとメカニズムが想定しているため、失敗します。
私は、ユーザーがデータベースに列string_idを作成するのと同時に作成する方法を探しています。この値は自動的にStringに変換されて生成されたIDです。後の操作でそれを行うことができましたが、これをワンショットで実行できるかどうかは疑問でした。 @PrePersistを試しましたが、この段階でIDが生成されていないようです。ログインを行うスマートな方法がありますか?作成時に生成されたIDを文字列として別の列にコピーする
ありがとうございました。
からコピー
コードしかしem.persist(A)以上の利点があります。 a.setName(a.getId()。toString()); em.flush()?なぜそれはワンショットですか? – user244129