java - 如何在发送 post 方法时修复“尝试从空的一对一属性分配 id”?
问题描述
我创建了 2 个具有 OnetoOne 映射和共享主键的表,我尝试通过两个 post 方法将数据发送到这些表,但出现错误:
试图从空的一对一属性 [com.maciejg.School02.model.LoginAndPassword.studentsTeachersEntity] 分配 id
实体:
@Entity
@Table(name="usersinfo")
public class StudentsTeachersEntity {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "surname")
private String surname;
@Column(name = "username")
private String username;
@Column(name = "pesel")
private String pesel;
@Column(name = "phone_number")
private String phoneNumber;
@Column(name = "address")
private String address;
@Column(name = "email")
private String email;
@OneToOne(mappedBy = "studentsTeachersEntity", cascade =
CascadeType.ALL)
private LoginAndPassword loginAndPassword;
//getters, setters
@Entity
@Table(name="userandpassword")
public class LoginAndPassword {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long username_id;
@Column(name = "username")
private String username;
@Column(name = "user_password")
private String user_password;
@Column(name= "grade")
private String grade;
@Column(name= "comment")
private String comment;
@OneToOne
@JoinColumn
@MapsId
private StudentsTeachersEntity studentsTeachersEntity;
角类:
export class AddUserComponent implements OnInit {
model: StudentsTeachers = {
id: 0,
name: '',
surname: '',
username: '',
pesel: '',
phoneNumber:'',
address:'',
email:''
};
login: LoginAndPassword = {
id:0,
username:'',
user_password:'',
grade:'',
comment:''
};
constructor(private apiService: ApiService) { }
ngOnInit() {
}
send(){
this.apiService.addUser(this.model).subscribe(
res => {
alert("User added");
//location.reload();
},
err => {
alert("Error while sending value");
}
);
}
sendToLoginPasswordEntity(){
this.apiService.addLoginAndPassword(this.login).subscribe(
res => {
// location.reload(); //reload page
alert("OK")
location.reload();
},
err => {
alert("Sth go wrong");
}
);
}
方法 send() 起作用并向 usersinfo 表添加值,但第二种方法会导致标题中描述的错误。
部分 HTML 表单代码:
<form #f="ngForm" (ngSubmit)="f.form.valid && sendToLoginPasswordEntity(); send()" >
<div class="field">
<label class="label">Pesel</label>
<div class="control">
<input class="input" name="pesel" placeholder="pesel"
[(ngModel)]="model.pesel"
[(ngModel)]="login.user_password"
#pesel="ngModel"
[ngClass]="{'is-danger': f.submitted && pesel.invalid}"
required />
解决方案
推荐阅读
- r - 你如何检查文件是否存在于共享中
- sql - SQL Server 中 LAG() 的替代方法
- react-native - uploadProgress 没有被触发 rn-fetch-blob
- java - 如何在java中创建具有空参数列表的方法
- javascript - Ruby RSpec/Capybara/Selenium 最近没有运行 javascript
- node.js - 用于自引用实体的 Typeorm 嵌套关系
- java - 从java中的url中删除端口号
- powerbi - 有没有办法在 M (Power BI) 中的文本字符串中添加换行符?
- ruby-on-rails - 为什么使用带有图像的 Rails 资产管道?
- bash - Nohup 不适用于 bash for 循环