【发布时间】:2021-07-18 06:20:09
【问题描述】:
我有两个模型,一个用于存储用户详细信息,使用该 ID,我试图将用户位置保存在另一个表中,该表使用与主键相同的用户 ID。
用户模型
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(unique = true)
private String username;
@Column(unique=true)
private String email;
private String password;
private String Role;
@OneToOne(mappedBy = "user")
private UserLocation location;
//...constructors, getters and setters
}
用户位置模型
@Entity
public class UserLocation {
@Id
private Long id;
@OneToOne(cascade = CascadeType.MERGE)
@JoinColumn(name="id")
@MapsId
private User user;
private Point location;
//...constructors, getters and setters
}
我的 Spring Boot 应用程序类,我尝试将记录插入到两个表中
@SpringBootApplication
public class ContainmentZoneAlertApp implements CommandLineRunner {
@Autowired
private UserlocationRepository userLocRepo;
@Autowired
private UserRepository userRepo;
public static void main(String[] args) {
SpringApplication.run(ContainmentZoneAlertApp.class, args);
}
@Override
public void run(String... args) throws Exception {
UserLocation userLocation = new UserLocation();
Geometry geometry = GeometryUtil.wktToGeometry(String.format("POINT (13.0827 80.2707)"));
//GeometryUtil is a utility class
User user = new User(null,"user 3","user3@gmail.com","hello123","user");
user = userRepo.save(user);
userLocation.setUser(user);
userLocation.setLocation((Point)geometry);
userLocRepo.save(userLocation);
}
}
我得到
caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: com.saravanan.models.User
为什么会出现此错误?坚持是什么意思? & 我正在使用 MySQL 数据库
【问题讨论】:
-
尝试将 @GeneratedValue(strategy = GenerationType.AUTO) 放在 UserLocation pojo 的 id 字段上
-
或者stackoverflow.com/questions/23645091/…这个回答你的问题吗?
标签: java spring-boot hibernate spring-data-jpa spatial