【发布时间】:2019-10-04 03:57:19
【问题描述】:
我有LoginCredential 类:
@Data
@Entity
public class LoginCredential implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long userID;
String eMail;
String passwordHash;
@GeneratedValue(strategy = GenerationType.AUTO)
@OneToOne(mappedBy = "loginCredential", fetch = FetchType.LAZY)
User user;
}
这是我的User 课程:
@Data
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long userID;
@OneToOne(fetch = FetchType.LAZY,targetEntity = LoginCredential.class)
@JoinColumn(name = "userID",referencedColumnName = "userID")
private LoginCredential loginCredential;
}
而我的LoginCredentialController 的POST 方法很简单:
@PostMapping("/login")
LoginCredential newLoginCredential(@RequestBody LoginCredential newLoginCredential) {
logger.debug(newLoginCredential);
LoginCredential a=repository.save(newLoginCredential);
logger.debug(a);
return a;
}
现在当我尝试这个命令时:curl -X POST -H "Content-Type: application/json" -d "{ \"email\": \"1\"}" http://localhost:8080/login
我得到一个LoginCredential 没有任何错误,要提到的user 字段是null。
这就是我尝试这个命令的原因curl -X POST -H "Content-Type: application/json" -d "{ \"email\": \"1\",\"user\":{} }" http://localhost:8080/login
这给了我错误的说法:
{ "status" : 500, "error" : "Internal Server Error", "message" : "org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : com.mua.cse616.Model.LoginCredential.user -> com.mua.cse616.Model.User; org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : com.mua.cse616.Model.LoginCredential.user -> com.mua.cse616.Model.User", "trace":.... }
【问题讨论】:
标签: spring hibernate spring-boot jpa