Eine zu viele Beziehung, Aktualisierung von Daten im Spring Boot funktioniert nichtJava

Java-Forum
Anonymous
 Eine zu viele Beziehung, Aktualisierung von Daten im Spring Boot funktioniert nicht

Post by Anonymous »

Ich bin ein naiver Benutzer, der am Spring -Boot arbeitet. Erstellen einer Onetomany -Beziehung mit dem Benutzer (übergeordnet) -> Adresse (Kind). < /p>
Post funktioniert (Erstellen eines Benutzer ) < /p>
Der Benutzerdatensatz auf Postman kann nicht aktualisiert werden, sondern versucht, online zu suchen, aber keine der Lösungen hat für mich funktioniert. < /p>
Hier ist mein Code < /p>

Code: Select all

User.java

@Entity
public class User {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String name;
// @JsonIgnore
@JsonManagedReference
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
private List addresses;

// Getters and setters
}

@Entity
public class Address {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String street;
private String city;
private String state;
private String zip;

@JsonBackReference
@ManyToOne
@JoinColumn(name = "user_id")
private User user;

// Getters and setters
}

UserController.java

@PutMapping("/{id}")
public User updateUser(@PathVariable Long id, @RequestBody User user) {
User existingUser = userService.getUser(id);
existingUser.setName(user.getName());
existingUser.setAddresses(user.getAddresses());
return userService.updateUser(existingUser);
}

userService.java

public User updateUser(User user) {
return userRepository.save(user);
}

**OutPut**

org.hibernate.TransientObjectException: persistent instance references an unsaved transient instance of 'com.clt.product_service.entity.User' (save the transient instance before flushing)
at org.hibernate.engine.spi.CascadingActions$9.cascade(CascadingActions.java:382) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.engine.spi.CascadingActions$9.cascade(CascadingActions.java:372) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:570) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:492) ~[hibernate-core-6.6.4.Final.jar:6.6.4.Final]
< /code>
Postman - Ausgabe < /p>
 "timestamp": "2025-02-20T20:35:11.402+00:00",
"status": 500,
"error": "Internal Server Error",
"trace": "org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientObjectException: persistent instance references an unsaved transient instance of 'com.clt.product_service.entity.User' (save the transient instance before flushing)\r\n\tat org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:368)\r\n\tat org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:246)\r\n\tat org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post