私には2つのエンティティがあります。スポーツ:
@Entity
public class Sports implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "SPORT_NAME")
private String name;
...
}
およびSportFacility:
@Entity
public class SportFacility implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "SPORTFAC_NAME")
private String name;
@OneToMany
private List<Sports> sports;
....
}
次に、Sportsテーブルにいくつかのスポーツを作成しました。たとえば、次のようになります。
--id-----name-----
- 0 - Football -
- 1 - Basketball-
- 2 - Golf -
------------------
そして、私はいくつかのスポーツでスポーツ施設を作る必要があります。すべてのスポーツを取りましょう
List<Sports> listSports = sb.getAllSports(); //JPQL: SELECT s FROM Sports s
SportFacility sportFacility = new SportFacility("Stadium", listSports);
em.getTransaction().begin();
em.persist(sportFacility);
em.getTransaction().commit();
エラー:
java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST: database.entities.sports[ id=0 ].
テーブルにスポーツがほとんどなく、同じスポーツで新しいレコードを作成する必要がないため、Cascade.ALLまたはPERSISTを使用したくありません...ありがとうございます。