Как установить свойство модели int для Java в исходное неустановленное состояние, а не в ноль в хранилище данных App Engine? - PullRequest
0 голосов
/ 03 июня 2011

Одно из свойств моего класса модели Java, представляющего сущность хранилища данных, представлено значением int:

int trackedUserId;

Это значение устанавливается для определенного идентификатора пользователя во время выполнения приложения. А затем в других точках я хочу сбросить его в исходное неустановленное состояние, представленное нулевым значением. Но единственный способ, которым я вижу, чтобы сбросить его, это установить его в нулевое значение. Есть ли какой-то другой способ в JDO сбросить свойство в его неустановленное состояние?

Ответы [ 2 ]

4 голосов
/ 03 июня 2011

int является примитивным значением, поэтому его нельзя установить на null.Согласно документам JDO, здесь :

Если объект хранилища данных загружен в объект и не имеет свойства для одного из полей объекта, а тип поля являетсяОбнуляемый тип с одним значением, поле имеет значение null.Когда объект сохраняется обратно в хранилище данных, для свойства null в хранилище данных устанавливается нулевое значение.Если поле не имеет типа значения, допускающего обнуляемость, загрузка объекта без соответствующего свойства вызывает исключение.Этого не произойдет, если сущность была создана из того же класса JDO, который использовался для воссоздания экземпляра, но может произойти, если изменится класс JDO или если сущность была создана с использованием низкоуровневого API вместо JDO.

Если вы создаете новую запись, которая имеет поле int, и не указываете значение, у нее будет значение Java по умолчанию для таких полей, которое равно 0.

0 голосов
/ 03 июня 2011
Integer trackedUserId;
trackedUserId = 1;
//voodoo happens
//so you reset to null
trackedUserId = (Integer) null;

Как вы сказали, его исходное состояние представлено нулевым значением, поэтому, если вы хотите, чтобы оно снова было нулевым, просто установите его таковым.

...