2012-01-12 3 views
1

Я столкнулся с проблемой, когда я не могу сохранить Map<UUID, Integer> с использованием Hibernate. Я не уверен, как правильно аннотировать эту коллекцию, чтобы ее можно было правильно отобразить в нашу базу данных. Мы контролируем схему, поэтому любой способ это будет работать. Мне нужно каким-то образом указать, какой тип UserType находится на моей карте? Нужен ли он мне? Я знаю, что аннотация типа используется для отдельных полей. Возможно, не коллекции? Я получаю следующее исключение на моем призыве к session.flush()Hibernate сопоставление UserType внутри карты

java.lang.ClassCastException: java.lang.String cannot be cast to java.util.UUID

@ElementCollection 
@Type(type="org.hibernate.type.UUIDCharType") 
private Map<UUID, Boolean> orderCount = new HashMap<UUID, Integer>(); 
+0

Может ли это, что UUIDCharType предназначен для строк, а не UUID? – Firo

ответ

0

Я считаю, что вам придется написать UserType обрабатывать Map<UUID, Boolean> .. Это UserType следует затем использовать org.hibernate.type.UUIDCharType для отображения ключевого столбца.

+0

Как вы можете указать UserType для столбца ключа и значения отдельно, используя аннотации? – Ryan

+1

Я узнал, как: '@MapKeyType (value = @ Type (type =" org.hibernate.type.UUIDCharType "))' будет делать это. Это делает ненужным создание «UserType». Кто-нибудь знает, как установить его для значения? (Несмотря на то, что здесь нет необходимости для логического) – Ryan

+0

@ Ryan вы могли бы взглянуть на мой аналогичный вопрос: http://stackoverflow.com/questions/32307329/hibernate-4-what-should-replace-deprecated- mapkey к карте-а-карта-коллекция-бея – DerekY