Сохранять исходное Java Enum с помощью Hibernate

У меня есть объект, который содержит свойство enum. Это свойство может быть любым из моих типов перечислений в моей кодовой базе:

public enum AutomobileType {
   CAR, TRUCK, MOTORCYCLE
}

public enum BoatType {
   ROW_BOAT,YACHT,SHIP
}

@Entity
public class FooBar {

  @Enumerated(value=EnumType.ORDINAL)
  private Enum enumValue;

  public void setEnumValue(Enum value) { ... }
  public Enum getEnumValue() { ... }
}

Ошибка с исключением: «Неверный тип данных: для входной строки:» [ B @ f0569aв настоящее время этот класс не поддерживает использование в нескольких процессах. Это будет добавлено позже. "Так что само по себе это не похоже ...

Глядя на документы SharedPreferences , говорится:

" Примечание: в настоящее время этот класс не поддержка использования в нескольких процессах. Это будет добавлено позже ».

Таким образом, само по себе это не похоже на Thread Safe. Однако какие гарантии даются в отношении commit () и apply ()?

Например:

synchronized(uniqueIdLock){
   uniqueId = sharedPreferences.getInt("UNIQUE_INCREMENTING_ID", 0);
   uniqueId++;
   sharedPreferences.edit().putInt("UNIQUE_INCREMENTING_ID", uniqueId).commit();
}

Будет ли гарантировано, что в этом случае uniqueId всегда был уникальным?

Если нет, есть ли лучший способ отслеживать уникальный идентификатор для сохраняющегося приложения?

48
задан cottonBallPaws 7 February 2013 в 16:55
поделиться