Прежде всего, я не написал никаких операторов 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;
}
...
}
Отношение - это идентификатор владельца задачи (oid) - это идентификатор пользователя.
Чтобы сохранить пользователя в моей базе данных, я использую почтальона со следующими параметрами:
{
"username": "firstuser",
"email": "firstuser@email.com"
}
Чтобы сохранить задачу в моей базе данных, я использую это:
{
"description": "some description",
"oid": "12" // I also can state username of the user rather than ID
}
Однако, когда я выполняю save задачу, oid задачи равен NULL. В объектах доступа к данным у меня есть:
@PostMapping("/save")
public QR createTask(@Valid @RequestBody Task task)
{
return taskDAO.save(task);
}
1-Что я делаю не так? Я просто хочу добавить задачу с идентификатором владельца в базу данных, однако она возвращает null как ownerid.
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- Должен ли я изменить свой метод контроллера (метод createTask с помощью RESTcall)
5- Предположим, что все вышеуказанные проблемы устранены. Как я могу получить все задачи, которые есть у пользователя?
6 - Как я могу удалить задачу при удалении пользователя (каскад в SQL, но есть ли какой-либо метод в Hibernate)
Надеюсь, я объяснил свою проблему. Любые отзывы будут оценены.