2010-04-11 6 views
3

Я использую библиотеку Objectify для взаимодействия с хранилищем данных приложения.App Engine - Objectify - Хранение байта []

В моем классе User я храню хешированный пароль как byte[]. Когда я помещаю его в хранилище данных, он правильно хранится как blob.

При попытке загрузите User объект обратно, что я получаю эту ошибку:

java.lang.IllegalStateException: Cannot load non-collection value '<Blob: 40 bytes>' into private byte[]

Как это исправить?

Должен ли я изменить свой класс пользователя, чтобы иметь хешированный пароль типа ShortBlob?

ответ

3

Почему бы вам не получить Blob (или ShortBlob), а затем взять byte[] из getBytes()?

+0

Я думаю, что у OP возникает проблема со somthing как ofy.get (User.class, user.id). – systempuntoout

+0

выглядит как OP понравилось предложение! :) – JohnIdol

0

Я хотел бы попробовать с:

  1. Использование ShortBlog в вашем Pojo пользователя класса
  2. Преобразование Byte [] в строку с помощью строки вместо байт для хранения пароль
  3. Проводка запрос на Objectify google group
0

Я предлагаю использовать только строку md5 'd? Другая возможность - когда вы пытаетесь загрузить байт, Пользователь не был правильно зарегистрирован Objectify. есть ссылка в лучших практиках «объективировать на»

http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#Relationships

, что предполагает статическую регистрацию ваших классов POJO.

Смежные вопросы