I'm learning java Hibernate, when i save the user through api, there is an error, anyone can figure out what is the problem?
hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
".0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database Connection Settings -->
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/spring_hibernate</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">Abcd1234</property>
<!-- Hibernate Settings -->
<property name="hibernate.dialect">.hibernate.dialect.MySQL8Dialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- Mapped Entity -->
<mapping class="com.example.demo.model.User"/>
</session-factory>
</hibernate-configuration>
HibernateUtil.java
package com.example.demo.config;
import com.example.demo.model.User;
import .hibernate.SessionFactory;
import .hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new Configuration()
.configure("hibernate.cfg.xml")
.addAnnotatedClass(User.class)
.buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
User.java
package com.example.demo.model;
import .hibernate.annotations.GenericGenerator;
import jakarta.persistence.*;
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
private Long id;
private String name;
private String email;
// Constructors
public User() {}
public User(String name, String email) {
this.name = name;
this.email = email;
}
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
UserDao.java
package com.example.demo.dao;
import com.example.demo.config.HibernateUtil;
import com.example.demo.model.User;
import .hibernate.Session;
import .hibernate.Transaction;
import java.util.List;
public class UserDAO {
public List<User> getAllUsers() {
try (Session session = HibernateUtil.getSessionFactory().openSession()) {
return session.createQuery("FROM User", User.class).list();
}
}
public User getUserById(Long id) {
try (Session session = HibernateUtil.getSessionFactory().openSession()) {
return session.get(User.class, id);
}
}
public void saveUser(User user) {
Session session = null;
Transaction transaction = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
transaction = session.beginTransaction();
session.save(user);
transactionmit();
} catch (Exception e) {
if (transaction != null && transaction.isActive()) {
transaction.rollback();
}
e.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
public void updateUser(Long id, User userDetails) {
Session session = null;
Transaction transaction = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
transaction = session.beginTransaction();
User user = session.get(User.class, id);
if (user != null) {
user.setName(userDetails.getName());
user.setEmail(userDetails.getEmail());
session.update(user);
transactionmit();
}
} catch (Exception e) {
if (transaction != null && transaction.isActive()) {
transaction.rollback();
}
e.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
public void deleteUser(Long id) {
Session session = null;
Transaction transaction = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
transaction = session.beginTransaction();
User user = session.get(User.class, id);
if (user != null) {
session.delete(user);
transactionmit();
}
} catch (Exception e) {
if (transaction != null && transaction.isActive()) {
transaction.rollback();
}
e.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
}
UserController.java
package com.example.demo.controller;
import com.example.demo.dao.UserDAO;
import com.example.demo.model.User;
import .springframework.http.ResponseEntity;
import .springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserDAO userDAO = new UserDAO();
@GetMapping
public List<User> getAllUsers() {
return userDAO.getAllUsers();
}
@GetMapping("/{id}")
public ResponseEntity<User> getUserById(@PathVariable Long id) {
User user = userDAO.getUserById(id);
return user != null ? ResponseEntity.ok(user) : ResponseEntity.notFound().build();
}
@PostMapping
public ResponseEntity<String> createUser(@RequestBody User user) {
userDAO.saveUser(user);
return ResponseEntity.ok("User created successfully");
}
@PutMapping("/{id}")
public ResponseEntity<String> updateUser(@PathVariable Long id, @RequestBody User userDetails) {
userDAO.updateUser(id, userDetails);
return ResponseEntity.ok("User updated successfully");
}
@DeleteMapping("/{id}")
public ResponseEntity<String> deleteUser(@PathVariable Long id) {
userDAO.deleteUser(id);
return ResponseEntity.ok("User deleted successfully");
}
}
error:
Hibernate: select max(id) from users
.hibernate.PropertyAccessException: Could not set value of type [java.lang.Long]: 'com.example.demo.model.User.id' (setter)
at .hibernate.property.access.spi.SetterFieldImpl.set(SetterFieldImpl.java:88)
at .hibernate.metamodel.mapping.internal.BasicEntityIdentifierMappingImpl.setIdentifier(BasicEntityIdentifierMappingImpl.java:163)
at .hibernate.persister.entity.AbstractEntityPersister.setIdentifier(AbstractEntityPersister.java:4497)
at .hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:128)
at .hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:182)
at .hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)
at .hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:81)
at .hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127)
at .hibernate.internal.SessionImpl.fireSave(SessionImpl.java:668)
at .hibernate.internal.SessionImpl.save(SessionImpl.java:660)
at .hibernate.internal.SessionImpl.save(SessionImpl.java:655)
at com.example.demo.dao.UserDAO.saveUser(UserDAO.java:29)
at com.example.demo.controller.UserController.createUser(UserController.java:29)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at .springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:254)
at .springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:182)
at .springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
at .springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:917)
at .springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:829)
at .springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at .springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
at .springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
at .springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
at .springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
at .springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at .apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at .springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at .springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at .springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at .apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at .apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at .apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at .apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at .apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at .apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340)
at .apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
at .apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at .apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
at .apache.tomcat.util.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744)
at .apache.tomcat.util.SocketProcessorBase.run(SocketProcessorBase.java:52)
at .apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at .apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at .apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:1575)
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field com.example.demo.model.User.id to com.example.demo.model.User
at java.base/jdk.internal.reflect.FieldAccessorImpl.throwSetIllegalArgumentException(FieldAccessorImpl.java:228)
at java.base/jdk.internal.reflect.FieldAccessorImpl.throwSetIllegalArgumentException(FieldAccessorImpl.java:232)
at java.base/jdk.internal.reflect.MethodHandleFieldAccessorImpl.ensureObj(MethodHandleFieldAccessorImpl.java:63)
at java.base/jdk.internal.reflect.MethodHandleObjectFieldAccessorImpl.set(MethodHandleObjectFieldAccessorImpl.java:101)
at java.base/java.lang.reflect.Field.set(Field.java:836)
at .hibernate.property.access.spi.SetterFieldImpl.set(SetterFieldImpl.java:57)
I'm learning java Hibernate, when i save the user through api, there is an error, anyone can figure out what is the problem?
hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourcefe/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database Connection Settings -->
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/spring_hibernate</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">Abcd1234</property>
<!-- Hibernate Settings -->
<property name="hibernate.dialect">.hibernate.dialect.MySQL8Dialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- Mapped Entity -->
<mapping class="com.example.demo.model.User"/>
</session-factory>
</hibernate-configuration>
HibernateUtil.java
package com.example.demo.config;
import com.example.demo.model.User;
import .hibernate.SessionFactory;
import .hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new Configuration()
.configure("hibernate.cfg.xml")
.addAnnotatedClass(User.class)
.buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
User.java
package com.example.demo.model;
import .hibernate.annotations.GenericGenerator;
import jakarta.persistence.*;
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
private Long id;
private String name;
private String email;
// Constructors
public User() {}
public User(String name, String email) {
this.name = name;
this.email = email;
}
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
UserDao.java
package com.example.demo.dao;
import com.example.demo.config.HibernateUtil;
import com.example.demo.model.User;
import .hibernate.Session;
import .hibernate.Transaction;
import java.util.List;
public class UserDAO {
public List<User> getAllUsers() {
try (Session session = HibernateUtil.getSessionFactory().openSession()) {
return session.createQuery("FROM User", User.class).list();
}
}
public User getUserById(Long id) {
try (Session session = HibernateUtil.getSessionFactory().openSession()) {
return session.get(User.class, id);
}
}
public void saveUser(User user) {
Session session = null;
Transaction transaction = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
transaction = session.beginTransaction();
session.save(user);
transactionmit();
} catch (Exception e) {
if (transaction != null && transaction.isActive()) {
transaction.rollback();
}
e.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
public void updateUser(Long id, User userDetails) {
Session session = null;
Transaction transaction = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
transaction = session.beginTransaction();
User user = session.get(User.class, id);
if (user != null) {
user.setName(userDetails.getName());
user.setEmail(userDetails.getEmail());
session.update(user);
transactionmit();
}
} catch (Exception e) {
if (transaction != null && transaction.isActive()) {
transaction.rollback();
}
e.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
public void deleteUser(Long id) {
Session session = null;
Transaction transaction = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
transaction = session.beginTransaction();
User user = session.get(User.class, id);
if (user != null) {
session.delete(user);
transactionmit();
}
} catch (Exception e) {
if (transaction != null && transaction.isActive()) {
transaction.rollback();
}
e.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
}
UserController.java
package com.example.demo.controller;
import com.example.demo.dao.UserDAO;
import com.example.demo.model.User;
import .springframework.http.ResponseEntity;
import .springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserDAO userDAO = new UserDAO();
@GetMapping
public List<User> getAllUsers() {
return userDAO.getAllUsers();
}
@GetMapping("/{id}")
public ResponseEntity<User> getUserById(@PathVariable Long id) {
User user = userDAO.getUserById(id);
return user != null ? ResponseEntity.ok(user) : ResponseEntity.notFound().build();
}
@PostMapping
public ResponseEntity<String> createUser(@RequestBody User user) {
userDAO.saveUser(user);
return ResponseEntity.ok("User created successfully");
}
@PutMapping("/{id}")
public ResponseEntity<String> updateUser(@PathVariable Long id, @RequestBody User userDetails) {
userDAO.updateUser(id, userDetails);
return ResponseEntity.ok("User updated successfully");
}
@DeleteMapping("/{id}")
public ResponseEntity<String> deleteUser(@PathVariable Long id) {
userDAO.deleteUser(id);
return ResponseEntity.ok("User deleted successfully");
}
}
error:
Hibernate: select max(id) from users
.hibernate.PropertyAccessException: Could not set value of type [java.lang.Long]: 'com.example.demo.model.User.id' (setter)
at .hibernate.property.access.spi.SetterFieldImpl.set(SetterFieldImpl.java:88)
at .hibernate.metamodel.mapping.internal.BasicEntityIdentifierMappingImpl.setIdentifier(BasicEntityIdentifierMappingImpl.java:163)
at .hibernate.persister.entity.AbstractEntityPersister.setIdentifier(AbstractEntityPersister.java:4497)
at .hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:128)
at .hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:182)
at .hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)
at .hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:81)
at .hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127)
at .hibernate.internal.SessionImpl.fireSave(SessionImpl.java:668)
at .hibernate.internal.SessionImpl.save(SessionImpl.java:660)
at .hibernate.internal.SessionImpl.save(SessionImpl.java:655)
at com.example.demo.dao.UserDAO.saveUser(UserDAO.java:29)
at com.example.demo.controller.UserController.createUser(UserController.java:29)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at .springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:254)
at .springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:182)
at .springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
at .springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:917)
at .springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:829)
at .springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at .springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
at .springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
at .springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
at .springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
at .springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at .apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at .springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at .springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at .springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at .apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at .apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at .apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at .apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at .apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at .apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340)
at .apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
at .apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at .apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
at .apache.tomcat.util.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744)
at .apache.tomcat.util.SocketProcessorBase.run(SocketProcessorBase.java:52)
at .apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at .apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at .apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:1575)
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field com.example.demo.model.User.id to com.example.demo.model.User
at java.base/jdk.internal.reflect.FieldAccessorImpl.throwSetIllegalArgumentException(FieldAccessorImpl.java:228)
at java.base/jdk.internal.reflect.FieldAccessorImpl.throwSetIllegalArgumentException(FieldAccessorImpl.java:232)
at java.base/jdk.internal.reflect.MethodHandleFieldAccessorImpl.ensureObj(MethodHandleFieldAccessorImpl.java:63)
at java.base/jdk.internal.reflect.MethodHandleObjectFieldAccessorImpl.set(MethodHandleObjectFieldAccessorImpl.java:101)
at java.base/java.lang.reflect.Field.set(Field.java:836)
at .hibernate.property.access.spi.SetterFieldImpl.set(SetterFieldImpl.java:57)
Share
Improve this question
edited Mar 11 at 9:19
hkguile
asked Mar 11 at 9:00
hkguilehkguile
4,36719 gold badges74 silver badges144 bronze badges
1 Answer
Reset to default 0Please annotate the User's id as follows,
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
or
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
Pleaser refer the documentation for more info, Enum GenerationType