Я пытаюсь создать простое полное приложение стека ti c -ta c -ee, но у меня есть некоторые проблемы при определении отношения один-ко-многим.
здесь контекст У нас есть главный стол Игры:
CREATE TABLE `tictactoe`.`games` (
`idgames` INT NOT NULL AUTO_INCREMENT,
`gridConf` VARCHAR(45) NOT NULL,
`playerNum` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idgames`));
и дополнительный стол, Игровые шаги:
CREATE TABLE `tictactoe`.`gamesteps1` (
`idgamesteps` INT NOT NULL AUTO_INCREMENT,
`idgame` INT NOT NULL,
`step` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idgamesteps`));
Я бы хотел определить отношение Один (Игра) ко Многим (Игры) где комбо Gamesteps.idgamesteps и Gamesteps.games является первичным ключом таблицы Gamesteps.
У меня есть два сомнения:
1 - как мне определить мои таблицы БД? мои права запросов или мне нужен явный первичный ключ?
2 -JPA аннотации: здесь мои сущности:
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Games {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer idgames;
private String gridConf;
private Integer playerNum;
@OneToMany(mappedBy = "idgames")
private Set<GameSteps> gameSteps;
//all setter/getters
вторичная таблица:
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class GameSteps {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer idGameSteps;
@ManyToOne
@JoinColumn(name = "idgames", referencedColumnName = "idgames")
private Integer idgame;
private String step;
//all setter/getter
i я пытаюсь заархивировать возможность выполнения операции Save / findAll через мой интерфейс CRUDRepository на главном объекте (Games) и автоматически c Save / findAll на всех других дочерних объектах (gamesteps).
для меня не ясно, где я должен использовать аннотации @OneToMany
или @ManyToOne
. На данный момент я получаю только исключения.
Если вам нужна другая информация, просто спросите, любой тип справки / документации будет очень кстати!
Спасибо!
После комментария @Smutje я изменился на:
public class GameSteps {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer idGameSteps;
@ManyToOne
@JoinColumn(name = "idgames", referencedColumnName = "idgames")
private **Games** idgame;
и
@OneToMany(mappedBy = "**idgame**")
private Set<GameSteps> gameSteps;
, но получил:
java.sql.SQLSyntaxErrorException: Unknown column 'idgames' in 'field list'