Hibernate — зашифрованная ссылка по связям с именами пользователей

Мне было интересно, возможна ли моя идея с спящим режимом.

Я хочу, чтобы была одна таблица с именами пользователей, и каждая таблица, в которой есть ссылка на эту таблицу, имеет имя пользователя, зашифрованное в столбце. Таким образом, имя пользователя не отображается в обычном тексте, а зашифровано в каждой таблице, в которой есть ссылка на пользовательскую таблицу.

Поэтому мне нужно что-то вроде:

@ManyToOne
@JoinColumn(name = "userName", insertable=false, updatable=false, encrypted="md5")
public User getUser(){
    return this.user;
}
public void setUser(User user ){
    this.user = user;
}

Надеюсь, я ясно выразился.


person Michel    schedule 19.07.2010    source источник
comment
Я нашел то, что, возможно, мне нужно: jasypt.org/hibernate3.html   -  person Michel    schedule 19.07.2010


Ответы (1)


Вы должны реализовать это с помощью пользовательского UserType и Jasypt (Java Simplified Encryption) фактически предоставляет базовый набор Hibernate UserType, который может удовлетворить ваши потребности.

Смотрите также

person Pascal Thivent    schedule 19.07.2010
comment
Звучит как решение, но я ничего не могу найти о @oneToMany и о том, что одна сторона зашифрована. Итак, в пользовательской таблице нет шифрования для имени пользователя, но, например, для userCategories есть. Как вы думаете, это возможно? спасибо - person Michel; 19.07.2010
comment
@michel Я не уделил достаточно внимания этому вопросу и должен был упомянуть об этом в своем ответе, но идея состоит в том, чтобы зашифровать базовые типы, а не сущности (т. Е. username в User, а не сам объект User). - person Pascal Thivent; 19.07.2010
comment
Я не хочу шифровать целые объекты, а только ссылочные поля. но я не думаю, что это сработает. Отправляю запрос разработчикам Jasypt. @ManyToOne не сработает, потому что он пытается разрешить сущность пользователя перед расшифровкой. получить ошибку: строки с данным идентификатором не существует: com.foo.bar.models.User#M9LgndiyCsVGqfVRVblb3A== спасибо за ваш ответ - person Michel; 20.07.2010