come dice il titolo ho problema nella implementazione dal db all'entiti manager io ho 3 classi
ordinabile piatto e menu dove paitto e menu sn specializzazione di ordinabile.

il problema e che netbeans concreate entity manager for database crea queste 3 classi come semplice classi e non crea la specializzazione come dovere.....

io spero nn so cosa modificare di queste classi e non so dove mettere mani. ho provatoa leggermi guide ma non ho trovato nulla di specifico se qualcuno puo likarmi qualche guida fatta bene che tratta questo orgamenti ....
ho provato pure a leggermi i vari articoli su jpa su html.it ma niente ho sn riuscito a cpaire molto.

il db è questo:



il codice delle 2 classe è questo:
piatto :
codice:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author orphen
 */
@Entity
@Table(name = "piatto")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Piatto.findAll", query = "SELECT p FROM Piatto p"),
    @NamedQuery(name = "Piatto.findByOrdinabilecod", query = "SELECT p FROM Piatto p WHERE p.ordinabilecod = :ordinabilecod"),
    @NamedQuery(name = "Piatto.findByNome", query = "SELECT p FROM Piatto p WHERE p.nome = :nome"),
    @NamedQuery(name = "Piatto.findByPrezzo", query = "SELECT p FROM Piatto p WHERE p.prezzo = :prezzo"),
    @NamedQuery(name = "Piatto.findByImage", query = "SELECT p FROM Piatto p WHERE p.image = :image")})
public class Piatto implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = true)
    @NotNull
    @Column(name = "ordinabilecod")
    private Integer ordinabilecod;
    @Lob
    @Size(max = 65535)
    @Column(name = "descrizione")
    private String descrizione;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 255)
    @Column(name = "nome")
    private String nome;
    @Basic(optional = false)
    @NotNull
    @Column(name = "prezzo")
    private double prezzo;
    @Size(max = 255)
    @Column(name = "image")
    private String image;
    @JoinColumn(name = "ordinabilecod", referencedColumnName = "cod", insertable = false, updatable = false)
    @OneToOne(optional = false)
    private Ordinabile ordinabile;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "piatto")
    private Collection<MenuPiatti> menuPiattiCollection;

    public Piatto() {
    }

    public Piatto(Integer ordinabilecod) {
        this.ordinabilecod = ordinabilecod;
    }

    public Piatto(Integer ordinabilecod, String nome, double prezzo) {
        this.ordinabilecod = ordinabilecod;
        this.nome = nome;
        this.prezzo = prezzo;
    }

    public Integer getOrdinabilecod() {
        return ordinabilecod;
    }

    public void setOrdinabilecod(Integer ordinabilecod) {
        this.ordinabilecod = ordinabilecod;
    }

    public String getDescrizione() {
        return descrizione;
    }

    public void setDescrizione(String descrizione) {
        this.descrizione = descrizione;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public double getPrezzo() {
        return prezzo;
    }

    public void setPrezzo(double prezzo) {
        this.prezzo = prezzo;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public Ordinabile getOrdinabile() {
        return ordinabile;
    }

    public void setOrdinabile(Ordinabile ordinabile) {
        this.ordinabile = ordinabile;
    }

    @XmlTransient
    public Collection<MenuPiatti> getMenuPiattiCollection() {
        return menuPiattiCollection;
    }

    public void setMenuPiattiCollection(Collection<MenuPiatti> menuPiattiCollection) {
        this.menuPiattiCollection = menuPiattiCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (ordinabilecod != null ? ordinabilecod.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Piatto)) {
            return false;
        }
        Piatto other = (Piatto) object;
        if ((this.ordinabilecod == null && other.ordinabilecod != null) || (this.ordinabilecod != null && !this.ordinabilecod.equals(other.ordinabilecod))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "model.Piatto[ ordinabilecod=" + ordinabilecod + " ]";
    }
    
}
menu:
codice:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author orphen
 */
@Entity
@Table(name = "menu")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Menu.findAll", query = "SELECT m FROM Menu m"),
    @NamedQuery(name = "Menu.findByOrdinabilecod", query = "SELECT m FROM Menu m WHERE m.ordinabilecod = :ordinabilecod"),
    @NamedQuery(name = "Menu.findByDescrizione", query = "SELECT m FROM Menu m WHERE m.descrizione = :descrizione"),
    @NamedQuery(name = "Menu.findByNome", query = "SELECT m FROM Menu m WHERE m.nome = :nome"),
    @NamedQuery(name = "Menu.findByPrezzo", query = "SELECT m FROM Menu m WHERE m.prezzo = :prezzo")})
public class Menu implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = true)
    @NotNull
    @Column(name = "ordinabilecod")
    private Integer ordinabilecod;
    @Size(max = 255)
    @Column(name = "descrizione")
    private String descrizione;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 255)
    @Column(name = "nome")
    private String nome;
    @Basic(optional = false)
    @NotNull
    @Column(name = "prezzo")
    private double prezzo;
    @JoinColumn(name = "ordinabilecod", referencedColumnName = "cod", insertable = false, updatable = false)
    @OneToOne(optional = false)
    private Ordinabile ordinabile;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "menu")
    private Collection<MenuPiatti> menuPiattiCollection;

    public Menu() {
    }

    public Menu(Integer ordinabilecod) {
        this.ordinabilecod = ordinabilecod;
    }

    public Menu(Integer ordinabilecod, String nome, double prezzo) {
        this.ordinabilecod = ordinabilecod;
        this.nome = nome;
        this.prezzo = prezzo;
    }

    public Integer getOrdinabilecod() {
        return ordinabilecod;
    }

    public void setOrdinabilecod(Integer ordinabilecod) {
        this.ordinabilecod = ordinabilecod;
    }

    public String getDescrizione() {
        return descrizione;
    }

    public void setDescrizione(String descrizione) {
        this.descrizione = descrizione;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public double getPrezzo() {
        return prezzo;
    }

    public void setPrezzo(double prezzo) {
        this.prezzo = prezzo;
    }

    public Ordinabile getOrdinabile() {
        return ordinabile;
    }

    public void setOrdinabile(Ordinabile ordinabile) {
        this.ordinabile = ordinabile;
    }

    @XmlTransient
    public Collection<MenuPiatti> getMenuPiattiCollection() {
        return menuPiattiCollection;
    }

    public void setMenuPiattiCollection(Collection<MenuPiatti> menuPiattiCollection) {
        this.menuPiattiCollection = menuPiattiCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (ordinabilecod != null ? ordinabilecod.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Menu)) {
            return false;
        }
        Menu other = (Menu) object;
        if ((this.ordinabilecod == null && other.ordinabilecod != null) || (this.ordinabilecod != null && !this.ordinabilecod.equals(other.ordinabilecod))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "model.Menu[ ordinabilecod=" + ordinabilecod + " ]";
    }
    
}