次のようなカリキュラムエンティティがあります。
@Entity
public class Curriculum {
@ManyToMany
private Set<Language> languages;
...
Curriculum インスタンスを永続化しようとしていますが、制約は Language インスタンスが既にデータベースにあることです。
curriculum
永続化の呼び出しが行われたときに、行がテーブル、curriculum_languages
マッピング テーブルに挿入されますが、テーブルは既に入力されている参照テーブルであるため、テーブルには挿入されないことを確認するにはどうすればよいですかlanguage
?
編集1:
Cascade.ALL
-属性を指定しないと発生するエラーは次のとおりです。
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.bignibou.domain.Language
- を指定するとCascade.ALL
、新しい ID を持つ新しい行がlanguage
テーブルに挿入されますが、これは明らかに私が望んでいるものではありません...
編集 2 : インスタンスを永続化するために Spring Data JPA を使用し、ブラウザーからのデータは次のように JSON オブジェクトであることに注意してください。
{"curriculum":{"languages":[{"id":46,"description":"Français"},{"id":30,"description":"Chinois"}],"firstName":"Julianito","dateOfBirth":"1975-01-06","telephoneNumber":"0608965874","workExperienceInYears":3,"maxNumberChildren":1,"drivingLicense":true}}