2014-09-13 1 views
0

Когда я пытаюсь восстановить объект в спящем режиме, это исключение исключения несоответствия типов.получение несоответствия типов при попытке получить объект в спящем режиме

HTTP Status 500 - Request processing failed; nested exception isorg.hibernate.TypeMismatchException: Provided id of the wrong type for classcom.ecommerce.models.User. Expected: class com.ecommerce.models.User, got classjava.lang.Integer

Session session=getSessionFactory().openSession(); 
     Transaction tx; 
     tx=session.beginTransaction(); 
     User u1=new User(); 
     u1.setUserName("abcdef"); 
     u1.setPassword("abcdef"); 
     u1.setEmailId("abcdef"); 
     session.save(u1); 
     tx.commit(); 

     User u=(User)session.get(User.class,u1.getId()); -->this line is throwing error 

Class Пользователь

@Entity 
@Table(name="USER") 
public class User implements Serializable { 

@Id 
@GenericGenerator(name="gen",strategy="increment") 
@GeneratedValue(generator="gen") 
@NotNull 
int Id; 

@Id 
@Column(name="USERNAME") 
@NotEmpty 
String userName; 
@Id 
@Column(name="EMAIL_ID") 
@NotEmpty 
String emailId; 

@Column(name="PASSWORD") 
@NotEmpty 
String password; 

Seetters and getters..... 

} 

Может кто-нибудь, пожалуйста, помогите?

+0

У вас уже есть 'u1', так как сеанс не поврежден. –

+0

Да, я создал u1 для проб и ошибок. Я думаю, что проблема возникает, потому что я объявил более одного первичного ключа в своей таблице. Может ли кто-нибудь сообщить, как я могу использовать несколько первичных ключей и использовать одну и ту же функцию поиска? –

+0

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

ответ

0

У вас есть три поля, аннотированные с помощью @Id ,. Если вы используете автоматически сгенерированный ключ суррогата, удалите @Id из электронной почты и имени пользователя. В противном случае, если вы используете адрес электронной почты и имя пользователя в качестве составного ПК, то вам не нужно автоматически сгенерированного суррогатный ключ, чтобы удалить это и посмотреть, как использовать композитный класс ID:

http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Composite_Primary_Keys

0

Вы используйте @Embeddeble и @EmbeddedId на классе и укажите столбцы pk. Подробнее об этом смотрите here

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