次の状況で問題が発生します。
私のSpring、Hibernateアプリケーションでは、UserEntityとUserCategoryEntityを取得しました。ユーザーエンティティのテーブルは、識別子としてユーザー名を取得しました。このテーブルは古いプログラムでも使用されているため、この識別子フィールドは暗号化できません。これを行うことはできません。
UserCategoryからUserへのManyToOne参照を作成するには、UserCategoryテーブルにユーザーの一意のユーザー名を持つフィールドが必要です。私がやりたいのは、Jasyptを使用してUserCategoryテーブルのユーザー名を暗号化することです。そしてもちろん、この作品:
@Type(type="encryptedString")
@ManyToOne
@JoinColumn(name = "username", insertable=false, updatable=false)
@ForeignKey(name = "none")
public User getUser(){
return this.user;
}
public void setUser(User user ){
this.user = user;
}
しかし、暗号化されたユーザー名をUserCategoryテーブルに配置した後、Hibernateが暗号化されたフィールドのユーザーを参照できないため、このレコードを使用できません。次のエラーが発生します。
"No row with the given identifier exists: com.foo.bar.models.User#M9LgndiyCsVGqfVRVblb3A=="
これは論理的なエラーですが、良い解決策を知っていますか。コードは最初に復号化してから参照を作成するために何かが必要だと思います。しかし、私はこれを行う方法に固執しています。