1 Reply Latest reply on Sep 1, 2010 10:36 AM by folgerfonseca

    How to persist with EntityHome in relation many to many

    baga

      Hello,
      I have a many to many relationship between Dizionario and Categoria. I'm using EntityHome for CRUD operation and i want to persist data, how can i do it? Anybody can help me?
      Here are my Entity:


      @Entity
      @Table(name = "Dizionario")
      public class Dizionario implements java.io.Serializable {
          private List<Categoria> categorie; 
          private Long id;
          private String frase;
          private boolean ricercatotale = false;
      
          public Dizionario() {
          }
      
          public Dizionario(boolean ricercatotale) {
              this.ricercatotale = ricercatotale;
          }
      
          public Dizionario(String frase, boolean ricercatotale) {
              this.frase = frase;
              this.ricercatotale = ricercatotale;
          }
      
          @Id
          @GeneratedValue(strategy = IDENTITY)
          @Column(name = "dizionario_id", unique = true, nullable = false)
          public Long getId() {
              return this.id;
          }
      
          public void setId(Long id) {
              this.id = id;
          }
      
          @Column(name = "frase")
          public String getFrase() {
              return this.frase;
          }
      
          public void setFrase(String frase) {
              this.frase = frase;
          }
      
          @Column(name = "ricercatotale", nullable = false)
          public boolean isRicercatotale() {
              return this.ricercatotale;
          }
      
          public void setRicercatotale(boolean ricercatotale) {
              this.ricercatotale = ricercatotale;
          }
      
          @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE },
                mappedBy = "dizionari",targetEntity = Categoria.class)
          public List<Categoria> getCategorie() {
              return categorie;
          }
      
          public void setCategorie(List<Categoria> categorie) {
              this.categorie = categorie;
          }
          
          
      }
      
      CATEGORIA
      
      
      @Entity
      @Table(name = "Categoria")
      public class Categoria implements java.io.Serializable {
          
          private Long id;
          private String nome;
          private Set<Dizionario> dizionari;
          
          
          public Categoria() {
          }
      
          public Categoria(String nome) {
              this.nome = nome;
          }
      
          @Id
          @GeneratedValue(strategy = IDENTITY)
          @Column(name = "catagoria_id", unique = true, nullable = false)
          public Long getId() {
              return this.id;
          }
      
          public void setId(Long id) {
              this.id = id;
          }
      
          @Column(name = "nome", length = 20)
          @Length(max = 20)
          public String getNome() {
              return this.nome;
          }
      
          public void setNome(String nome) {
              this.nome = nome;
          }
      
          
      
           @ManyToMany(
      
                      targetEntity=Dizionario.class// ,
      
                  //  cascade={CascadeType.PERSIST, CascadeType.MERGE}
      
                  )
      
                  @JoinTable(
      
                      name="Categoria_Dizionario",
      
                      joinColumns=@JoinColumn(name="categoria_id"),
      
                      inverseJoinColumns=@JoinColumn(name="dizionario_id"))
                      
          public Set<Dizionario> getDizionari() {
              return dizionari;
          }
      
          public void setDizionari(Set<Dizionario> dizionari) {
              this.dizionari = dizionari;
          }    
          
          // metodo equals: una categoria e' uguale all'altra se il nome coincide
          public boolean equals(Object obj) {
              return ((Categoria)obj).nome.equals(nome);
          }
      }