が、私は一度に両方を保存しようとしているNULL制約は
org.postgresql.util.PSQLException: ERROR: null value in column "tournament_id" violates not-null constraint`
Tournament.java
@Data
@Entity
public class Tournament {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
@OneToMany(mappedBy = "tournament", cascade = CascadeType.PERSIST)
private List<Group> groups;}
グループ
@Entity
@Data
@Table(schema = "offan", name = "groups")
public class Group {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ManyToOne
@JoinColumn(name = "tournament_id")
private Tournament tournament;
public Group(){}
public Group(Tournament tournament){
this.tournament = tournament;
}
}
を取得休止状態。 CrudRepository
となります。グループを持たないトーナメントのインスタンスを保存するだけでうまくいきます。グループが挿入されない理由がわかりませんtournament_idキーが正しく設定されています
私はゲッターとセッターにロンボクを使用しています。
DDL:
CREATE TABLE tournaments (
id SERIAL PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
CREATE TABLE groups (
id SERIAL PRIMARY KEY,
name VARCHAR(50) ,
tournament_id INTEGER REFERENCES tournaments (id) NOT NULL ,
UNIQUE (name, tournament_id)
);
可能性のある問題
私は春の大会オブジェクトに私のオブジェクトを解析する@RequestBody
使用し、これは正しくマッピングを設定していない可能性がありますか?
は...問題の正しいマッピングを設定していない基礎となるジャクソンライブラリを使用してオブジェクトを解析
ました。手動ですべてを正しく挿入しました。
@RequestMapping(value = "/tournaments", method = RequestMethod.POST)
public Tournament createTournament(@RequestBody Tournament tournament){
//Will not work
//Tournament savedEntry = tournamentRepository.save(tournament);
//
//Setting properties manually works...
Tournament t = new Tournament();
t.setName(tournament.getName());
Group group = new Group();
group.setTournament(t);
t.getGroups().add(group)
// Both tournament and group are inserted
t = tournamentRepository.save(t);
return t; //Overflow here because of jackson another thing to fix :)
}
DDLスクリプトを追加できますか? – Rocherlee
もちろん@Rocherlee! – skyw00lker
あなたの最後の編集は私の答えが意味するものです! :P: –