I'm writing 3 tables in the following relation:
Club class:
@Setter
@Getter
@Entity
@Table(name = "Club")
public class Club {
@Id
@GeneratedValue
private Long id;
private String name;
private String type;
private String mainPage;
private String logo;
@OneToMany(mappedBy="clubProductKey.club", cascade = CascadeType.ALL)
@JsonIgnoreProperties(value = "clubProductKey.club", allowSetters=true)
private Set<ClubProduct> clubProducts;
...
Product class:
@Setter
@Getter
@Entity
@Table(name = "Product")
public class Product {
@Id
@GeneratedValue
private Long id;
@OneToMany(mappedBy="clubProductKey.product", cascade = CascadeType.ALL)
@JsonIgnoreProperties(value = "clubProductKey.product", allowSetters=true)
private Set<ClubProduct> clubProducts;
...
ClubProduct class:
@Setter
@Getter
@Entity
@Table(name = "ClubProduct")
public class ClubProduct {
@EmbeddedId
private ClubProductKey clubProductKey;
...
ClubProductKey class:
@Setter
@Getter
@Embeddable
public class ClubProductKey implements Serializable {
@ManyToOne(cascade = {CascadeType.MERGE,CascadeType.REFRESH })
@JoinColumn(name = "club_id", referencedColumnName = "id")
@JsonIgnoreProperties(value = "clubProducts", allowSetters=true)
private Club club;
@ManyToOne(cascade = {CascadeType.MERGE,CascadeType.REFRESH })
@JoinColumn(name = "product_id", referencedColumnName = "id")
@JsonIgnoreProperties(value = "clubProducts", allowSetters=true)
private Product product;
...
ClubProductRepository class:
public interface ClubProductRepository extends JpaRepository<ClubProduct, ClubProductKey> {
public List<ClubProduct> findByClubProductKeyClub(Club club);
public List<ClubProduct> findByClubProductKeyProduct(Product product);
}
I try to save clubProduct like this:
@Service
public class ClubProductServiceImp implements ClubProductService {
@Autowired
private ClubProductRepository clubProductRepository;
...
ClubProduct savedClubProduct = clubProductRepository.save(clubProduct);
return savedClubProduct;
}
However I find that the clubProduct is not saved in the clubProducts list in the club or product entity, the list is null. Must I add lines like club.getClubProducts.add(clubProduct)
or is there any other way to make it added automatically?
Thank you.