2015-12-17 3 views
2

Hibernate используется как поставщик jpa.спящий режим автоматического преобразования типов

У меня есть объект с long ID:

@Id 
@Column 
private Long id; 

Но иногда это может быть запрошена с int ID:

int id = ... 
entityManager.find(MyEntity.class, id) 

И в этом случае лица, не найден в связи с сохранялось и просил id type разница.

Я мог бы преобразовать этот id вручную перед тем, как перейти к диспетчеру сущностей, но может ли спящий режим выполнять такое преобразование внутри?

ответ

1

Насколько я знаю, в Hibernate нет такого встроенного механизма. На момент предоставления ввода, например,

query.setParameter("abc", 5); 

будет рассматриваться как только int. Если вы хотите, чтобы передать его в качестве long, то вы должны указать его как

query.setParameter("abc", 5L); 

Если вы передаете любое переменное значение удержания, то вы должны убедиться, что вы преобразовать эту переменный в long первых, а затем передать его как параметр.

Помимо этого, вы можете также использовать

query.setLong("abc", 5L); 

, который всегда будет убедиться, что значение вы передадите, только long.

0

Вы можете попробовать следующее:

int z = 10; 
         
long w = z; 
System.err.println ("Value:" + w); 
         
Long id = w; 
System.err.println ("Value:" + id); 
         
entityManager.find (MyEntity.class, id); 
Смежные вопросы