【发布时间】:2019-04-13 16:54:50
【问题描述】:
首先,我还没有编写任何 SQL 语句来创建表。我尝试只使用 Hibernate/jpa 而不编写 SQL。
我的关系如下:一个用户可以有多个任务,一个任务只有一个用户。
我这样创建模型:
用户表:
@Entity
@Table(name="T_USER")
@EntityListeners(AuditingEntityListener.class)
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "uid")
private Long uid;
...
}
任务表:
@Entity
@Table(name = "T_TASK")
@EntityListeners(AuditingEntityListener.class)
public class TASK{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long tid;
@ManyToOne
@JoinColumn(name ="oid")
private User owner;
public User getOwner() {
return owner;
}
public void setOwner(User owner) {
this.owner = owner;
}
...
}
关系是任务的ownerid(oid)是用户的uid。
为了将用户保存到我的数据库中,我使用带有以下参数的邮递员:
{
"username": "firstuser",
"email": "firstuser@email.com"
}
为了将任务保存到我的数据库中,我使用了这个:
{
"description": "some description",
"oid": "12" // I also can state username of the user rather than ID
}
但是,当我执行保存任务时,任务的 oid 为 NULL。在数据访问对象中,我有:
@PostMapping("/save")
public QR createTask(@Valid @RequestBody Task task)
{
return taskDAO.save(task);
}
1-我做错了什么?我只想向数据库添加一个具有所有者 ID 的任务,但是它返回 null 作为所有者 ID。
2-我应该先用 SQL 创建一个表吗
Create table task(
tid BIGINT,
description VARCHAR(255),
oid BIGINT,
PRIMARY KEY(tid), FOREIGN KEY(oid) REFERENCES (user.uid))
3-我应该在TaskDAO中更改我的保存方法吗?
public Task save(Task task)
{
return taskRepository.save(task);
}
4- 我应该更改我的控制器方法(使用 RESTcall 的 createTask 方法)
5- 假设上述所有问题都已解决。如何获取用户拥有的所有任务?
6- 删除用户时如何删除任务(SQL中的大小写,但Hibernate中有任何方法)
我希望我能解释我的问题。任何反馈将不胜感激。
【问题讨论】:
标签: java hibernate rest postman dao