Java + Hibernate Demo API, org.hiberNate.propertyAccessexception: konnte den Wert des Typs nicht festlegen [java.lang.loJava

Java-Forum
Anonymous
 Java + Hibernate Demo API, org.hiberNate.propertyAccessexception: konnte den Wert des Typs nicht festlegen [java.lang.lo

Post by Anonymous »

Ich lerne Java Hibernate, wenn ich den Benutzer durch API speichere, gibt es einen Fehler. Jeder kann herausfinden, was das Problem ist?

Code: Select all





com.mysql.cj.jdbc.Driver
jdbc:mysql://localhost:3306/spring_hibernate
root
Abcd1234


org.hibernate.dialect.MySQL8Dialect
true
update





< /code>
HiNRNATEUTIL.java
package com.example.demo.config;

import com.example.demo.model.User;
import org.hibernate.SessionFactory;
import org.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;
}
}
< /code>
user.java
package com.example.demo.model;

import org.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;
}
}
< /code>
userdao.java
package com.example.demo.dao;

import com.example.demo.config.HibernateUtil;
import com.example.demo.model.User;
import org.hibernate.Session;
import org.hibernate.Transaction;
import java.util.List;

public class UserDAO {

public List 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);
transaction.commit();
} 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);
transaction.commit();
}
} 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);
transaction.commit();
}
} catch (Exception e) {
if (transaction != null && transaction.isActive()) {
transaction.rollback();
}
e.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
}
< /code>
uSerController.java
package com.example.demo.controller;

import com.example.demo.dao.UserDAO;
import com.example.demo.model.User;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/users")
public class UserController {

private final UserDAO userDAO = new UserDAO();

@GetMapping
public List getAllUsers() {
return userDAO.getAllUsers();
}

@GetMapping("/{id}")
public ResponseEntity getUserById(@PathVariable Long id) {
User user = userDAO.getUserById(id);
return user != null ? ResponseEntity.ok(user) : ResponseEntity.notFound().build();
}

@PostMapping
public ResponseEntity createUser(@RequestBody User user) {
userDAO.saveUser(user);
return ResponseEntity.ok("User created successfully");
}

@PutMapping("/{id}")
public ResponseEntity updateUser(@PathVariable Long id, @RequestBody User userDetails) {
userDAO.updateUser(id, userDetails);
return ResponseEntity.ok("User updated successfully");
}

@DeleteMapping("/{id}")
public ResponseEntity  deleteUser(@PathVariable Long id) {
userDAO.deleteUser(id);
return ResponseEntity.ok("User deleted successfully");
}
}
< /code>
Fehler: < /p>
Hibernate: select max(id) from users
org.hibernate.PropertyAccessException: Could not set value of type [java.lang.Long]:  ' c o m . e x a m p l e . d e m o . m o d e l . U s e r . i d '   ( s e t t e r ) < b r   / >                 a t   o r g . h i b e r n a t e . p r o p e r t y . a c c e s s . s p i . S e t t e r F i e l d I m p l . s e t ( S e t t e r F i e l d I m p l . j a v a : 8 8 ) < b r   / >                 a t   o r g . h i b e r n a t e . m e t a m o d e l . m a p p i n g . i n t e r n a l . B a s i c E n t i t y I d e n t i f i e r M a p p i n g I m p l . s e t I d e n t i f i e r ( B a s i c E n t i t y I d e n t i f i e r M a p p i n g I m p l . j a v a : 1 6 3 ) < b r   / >                 a t   o r g . h i b e r n a t e . p e r s i s t e r . e n t i t y . A b s t r a c t E n t i t y P e r s i s t e r . s e t I d e n t i f i e r ( A b s t r a c t E n t i t y P e r s i s t e r . j a v a : 4 4 9 7 ) < b r   / >                 a t   o r g . h i b e r n a t e . e v e n t . i n t e r n a l . A b s t r a c t S a v e E v e n t L i s t e n e r . s a v e W i t h G e n e r a t e d I d ( A b s t r a c t S a v e E v e n t L i s t e n e r . j a v a : 1 2 8 ) < b r   / >                 a t   o r g . h i b e r n a t e . e v e n t . i n t e r n a l . D e f a u l t S a v e O r U p d a t e E v e n t L i s t e n e r . e n t i t y I s T r a n s i e n t ( D e f a u l t S a v e O r U p d a t e E v e n t L i s t e n e r . j a v a : 1 8 2 ) < b r   / >                 a t   o r g . h i b e r n a t e . e v e n t . i n t e r n a l . D e f a u l t S a v e E v e n t L i s t e n e r . p e r f o r m S a v e O r U p d a t e ( D e f a u l t S a v e E v e n t L i s t e n e r . j a v a : 3 2 ) < b r   / >                 a t   o r g . h i b e r n a t e . e v e n t . i n t e r n a l . D e f a u l t S a v e O r U p d a t e E v e n t L i s t e n e r . o n S a v e O r U p d a t e ( D e f a u l t S a v e O r U p d a t e E v e n t L i s t e n e r . j a v a : 8 1 ) < b r   / >                 a t   o r g . h i b e r n a t e . e v e n t . s e r v i c e . i n t e r n a l . E v e n t L i s t e n e r G r o u p I m p l . f i r e E v e n t O n E a c h L i s t e n e r ( E v e n t L i s t e n e r G r o u p I m p l . j a v a : 1 2 7 ) < b r   / >                 a t   o r g . h i b e r n a t e . i n t e r n a l . S e s s i o n I m p l . f i r e S a v e ( S e s s i o n I m p l . j a v a : 6 6 8 ) < b r   / >                 a t   o r g . h i b e r n a t e . i n t e r n a l . S e s s i o n I m p l . s a v e ( S e s s i o n I m p l . j a v a : 6 6 0 ) < b r   / >                 a t   o r g . h i b e r n a t e . i n t e r n a l . S e s s i o n I m p l . s a v e ( S e s s i o n I m p l . j a v a : 6 5 5 ) < b r   / >                 a t   c o m . e x a m p l e . d e m o . d a o . U s e r D A O . s a v e U s e r ( U s e r D A O . j a v a : 2 9 ) < b r   / >                 a t   c o m . e x a m p l e . d e m o . c o n t r o l l e r . U s e r C o n t r o l l e r . c r e a t e U s e r ( U s e r C o n t r o l l e r . j a v a : 2 9 ) < b r   / >                 a t   j a v a . b a s e / j d k . i n t e r n a l . r e f l e c t . D i r e c t M e t h o d H a n d l e A c c e s s o r . i n v o k e ( D i r e c t M e t h o d H a n d l e A c c e s s o r . j a v a : 1 0 3 ) < b r   / >                 a t java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:254)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:182)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:917)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:829)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.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 org.hibernate.property.access.spi.SetterFieldImpl.set(SetterFieldImpl.java:57)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post