2016-11-20 8 views
0

エンティティを作成してそのIDを設定しないようにするにはどうすればよいですか?私は、データベースの自動インクリメントを延期し、それが起こった場合に409エラーをスローするようにします。データベースのオートインクリメントで@GeneratedValue(strategy = GenerationType.IDENTITY)と@GeneratedValue(strategy = GenerationType.AUTO)をプライマリキーで試していますが、IDの設定は問題としてフラグが立てられず、オートインクリメントスキームがmysqlデータベース。JPA/HibernateエンティティのIDをユーザが設定できないようにする

答えて

0

こんにちは、多分/あなただけのIDにゲッターを持つことができますが、私は冬眠知らないJPA

+0

ええと、おそらく動作しますが、私はHibernateの設定を望んでいました –

+0

'@GeneratedValue'を '@ Id(Hibernate、JPA、フィールドアクセス)に使用すると私のために動作します。 – garfield

1

あなたができることの一つは次のとおりです。あなたのオブジェクトのユーザアクセスsetId方法をさせないであろう、あなたのid property and its setter method privateを作ります、

しかし、Hibernateは、あなたのDBから読んでいるエンティティを初期化するには、setメソッドを使用して、それはリフレクションを使用してこのメ​​ソッドにアクセスすることができます。だから、あなたは他のものを変えることについて心配する必要はありません。

+0

Thanks Vimal。私はユニットテストのために409エラーを再現しようとしています。 idを値に設定してエンティティを作成すると、これがトリガされるケースはありますか?私はこれが409のエラーを引き起こすことがあると読んだが、それは起こるように見えない? –

+0

これを行う可能性のある@GeneratedValueの設定があることを期待していましたが、AUTOとIDENTITYはエンティティのidを設定できるようです。 idの設定へのアクセスをプライベートセッターで制限するか、セッターを完全に削除すると400になります。 –

+0

申し訳ありませんが、これは非常に良い質問ではないと思います。謝罪します。 –

関連する問題