问题
Actually i am finding best way to design data model for one of web service. I have three level of relationship. Currently unable to perform database operation with below data model.
Track has one or more Transition Set and Each Transition Set having one or more transition metadata detail.
I made data model as below. I hope i developed data model correctly.
- Track
- ID
- Title
- Artist
- [Other detail fields]
- Transition Set
- ID
- Track ID
- Transition Metadata
- ID
- Transition Set ID
- [Other detail Fields]
Implemented this but having issues about database operation and getting only first transition only.
@Entity
@Table(name = "tracks")
public class Track
{
@Id
@SequenceGenerator(name = "trackSeq", sequenceName = "seq_tracks_id", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "trackSeq")
private long id;
// Other fields
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, targetEntity = TransitionMetadata.class)
@JsonProperty
@JoinTable(name = "transition_set", joinColumns = { @JoinColumn(name = "track_id", referencedColumnName = "id",
table = "tracks") }, inverseJoinColumns = @JoinColumn(name = "id", referencedColumnName = "transition_set_id",
table = "transition_metadata"))
private List<TransitionMetadata> transitions = new ArrayList<>();
}
@Entity
@Table(name = "transition_set")
public class TransitionSet
{
@Id
@SequenceGenerator(name = "transitionSetSeq", sequenceName = "seq_transition_set_id", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "transitionSetSeq")
private long id;
@ManyToOne(cascade = CascadeType.DETACH, optional = true, fetch = FetchType.LAZY)
@JoinColumn(name = "track_id", referencedColumnName = "id")
private Track track;
}
@Entity
@Table(name = "transition_metadata")
public class TransitionMetadata
{
@Id
@SequenceGenerator(name = "transitionMetadataSeq", sequenceName = "seq_transition_metadata_id", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "transitionMetadataSeq")
private long id;
@ManyToOne(fetch = FetchType.EAGER, optional = false, cascade = CascadeType.DETACH)
@JoinColumn(name = "transition_set_id", referencedColumnName = "id")
private TransitionSet transitionSet;
// Other fields
}
Looks like i am stuck here, can you please help me to figure out stuff.
来源:https://stackoverflow.com/questions/41853136/unable-to-perform-database-curd-operations-using-dropwizard-hibernate-jpa