Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 29th, 2012  |  syntax: None  |  size: 1.43 KB  |  hits: 9  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Hibernate: insert ManyToMany, generate ID in relationship table
  2. class Books  
  3. {  
  4.    @Id  
  5.    long id;  
  6.  
  7.   @Column(name = "author_name")
  8.    String name;
  9.  
  10.  
  11.    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
  12.    @JoinTable(name = "BOOKS_AUTHORS",
  13.               joinColumns = @JoinColumn(name = "book_id"),
  14.               inverseJoinColumns = @JoinColumn(name = "author_id"))  
  15.    List<Authots> authors;  
  16.  
  17. // setter, getters, adder  
  18. }  
  19.  
  20. class Authors  
  21. {  
  22.    @Id  
  23.    long id;  
  24.  
  25.    @Column(name = "author_name")
  26.    String name;
  27.  
  28.    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
  29.    @JoinTable(name = "BOOKS_AUTHORS",
  30.               joinColumns = @JoinColumn(name = "author_id"),
  31.               inverseJoinColumns = @JoinColumn(name = "book_id"))  
  32.    List<Books> books;  
  33.  
  34. // setter, getters, adder  
  35. }
  36.        
  37. public void addAuthor(final String bookName, final Author author)
  38. {  
  39.       final Book book = // get book from database by bookName
  40.       if (book == null)
  41.          throw new DataNotFoundException("Book not found :(");
  42.       author.addBook(book);
  43.       book.addAuthor(author);  
  44.       entityManager.persist(author);  
  45. }
  46.        
  47. @Id
  48. @GeneratedValue(strategy=GenerationType.AUTO)
  49. private long id;
  50.        
  51. ALTER table book_authors CHANGE id long NOT NULL AUTO_INCREMENT;
  52.        
  53. session.CreateCriteria(typeof (BOOKS_AUTHORS))
  54.                            .SetProjection(Projections.Max("Id"))
  55.                            .UniqueResult()