Spring Data JPA/Hibernate OneToMany remove ManyToOne Child -


i experiencing following problem:

i have 3 pojo's

  • artist
  • album
  • track

with artist having onetomany relationship album, , album having onetomany relationship track.

artist.class

@entity public class artist {      @id     @generatedvalue     @column(name = "artist_id")     private long artist_id;      @column(name = "artist_name", nullable = false, length = 32)     private string artist_name;      @column(name = "artist_bio", nullable = false, length = 255)     private string artist_bio;      @lob     @basic(fetch = fetchtype.eager)     @column(name = "artist_avatar")     private byte[] artist_avatar;      @onetomany(fetch = fetchtype.eager, cascade = cascadetype.all, mappedby = "artist", orphanremoval = true)     private list<album> albumlist; 

album.class

@entity public class album {      @id     @generatedvalue     @column(name = "album_id")     private long album_id;      @manytoone(fetch = fetchtype.eager)     @joincolumn(name = "artist_id", nullable = false)     private artist artist;      @onetomany(fetch = fetchtype.eager, cascade = cascadetype.all, mappedby = "album", orphanremoval = true)     private list<track> tracklist;      @column(name = "album_name", nullable = false, length = 32)     private string album_name;      @column(name = "album_description", nullable = false, length = 255)     private string album_description;      @lob     @basic(fetch = fetchtype.eager)     @column(name = "album_avatar")     private byte[] album_avatar; 

track.class

@entity public class track {      @id     @generatedvalue     @column(name = "track_id")     private long track_id;      @column(name = "track_no", nullable = false, length = 2)     private string track_no;      @column(name = "track_name", nullable = false, length = 32)     private string track_name;      @column(name = "track_length", nullable = false, length = 32)     private string track_length;      @column(name = "track_file", nullable = false, length = 128)     private string track_file;      @manytoone(fetch = fetchtype.eager)     @joincolumn(name = "album_id", nullable = false)     private album album; 

track controller.class

@requestmapping(value = "/track", params = "delete", method = requestmethod.post) @transactional public string postdeletetrack(@requestparam long album_id, long track_id) {     trackservice.deletetrack(track_id);     return "redirect:album/" + album_id; } 

track service.class

public void deletetrack(long track_id) {     trackrepository.delete(track_id); } 

trackrepository.class

@repository public interface trackrepository extends crudrepository<track, long>{ } 

when call trackservice.deletetrack(track_id); track in mysql database isn't deleted. hibernate gives me lot of select statements output.

any appreciated , if need more information me feel free ask.

in repository method, add this

@query("delete  track t t.id=:id")  void  delete(@param("id")string id); 

since didnt override cascade policy,default cascade policy none, believe work. reference- http://docs.jboss.org/hibernate/orm/5.0/manual/en-us/html_single/


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -