我对以下情况有疑问:
在我的 Spring,Hibernate 应用程序中,我得到了一个 User Entity 和一个 UserCategory Entity。用户实体的表有一个用户名作为标识符。此标识符字段无法加密,因为此表也被旧程序使用,无法执行此操作。
要从 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=="
这是一个逻辑错误,但你知道一个好的解决方案吗?认为代码需要先解密然后尝试进行引用。但我坚持如何做到这一点。