0

I have an issue with my Hibernate app, I have model as below:

Team.java

@Entity
@Table(name = "TEAM")
public class Team implements Serializable{

private static final long serialVersionUID = 1L;

@Id
@GenericGenerator(name = "antony", strategy = "increment")
@GeneratedValue(generator = "antony")
@Column(name = "TEAM_ID")
int id;


@Column(name = "TEAM_NAME")
String name;


@OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.team")
@Column(name="TEAM_ID")
private Set<TeamMatchReference> teamMatchs = new HashSet<TeamMatchReference>(0);

Match.java

@Entity
@Table(name = "MATCHS")
public class Match implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GenericGenerator(name = "antony", strategy = "increment")
@GeneratedValue(generator = "antony")
@Column(name = "MATCH_ID")
int id;

//........  

@OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.match")
@Column(name="MATCH_ID")  
private Set<TeamMatchReference> teamMatchs = new HashSet<TeamMatchReference>(0);

TeamMatchId.java

@Embeddable
public class TeamMatchId implements Serializable {

private static final long serialVersionUID = 1L;

@ManyToOne
private Team team;

@ManyToOne
private Match match;

TeamMatchReference .java

@Entity
@Table(name = "team_match_reference")
@AssociationOverrides({ 
    @AssociationOverride(name = "pk.team", joinColumns = @JoinColumn(name = "TEAM_ID")),
    @AssociationOverride(name = "pk.match", joinColumns = @JoinColumn(name = "MATCH_ID")) })
public class TeamMatchReference implements Serializable {

private static final long serialVersionUID = 1L;

@EmbeddedId
private TeamMatchId pk;

@Column(name = "BET")
private float bet;

@Column(name = "SCORE")
private Integer score;

Then, I try to add new or update an Match object. The match was updated but its children - TeamMatchReference - were not updated, they're not inserted or deleted when I add or remove from the match.teamMatchReferenceSet.

Please help to make my code will update - insert and delete - the children when I update and save the match object.

Antony Dao
  • 425
  • 2
  • 14
  • If you are confused about all the different relationships and how to configure them with Hibernate, have a look [here](http://stackoverflow.com/questions/24257449/how-do-i-use-annotations-to-define-x-relationship-in-hibernate-4-and-spring). I wrote a Q&A on exactly that – JamesENL Jun 20 '14 at 04:45

1 Answers1

0

You need to use cascade

@OneToMany(cascade={CascadeType.ALL})

There are different cascade type. You can select the one that fits your requirement.

Pratik Shelar
  • 3,154
  • 7
  • 31
  • 51
  • Thank @Pratik, I fixed my code and it worked. `@OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.match", cascade = { CascadeType.ALL }) @Column(name = "MATCH_ID") private Set teamMatchs = new HashSet(0);` – Antony Dao Jun 20 '14 at 06:34