Persistindo uma relação Many to many no Banco usando JPA

Então pessoal, ja tenho toda a classe mapeada, mas não to entendo como vou fazer a gravação, como o banco cria uma tabela separada nesse tipo de relação, eu fiquei perdido. Segue abaixo o banco e classe Entidade.

Como ficaria por exemplo, para eu salvar vários layouts em uma ordem de serviço?

[code]@Table(name = “ordemservico”)
@XmlRootElement
@NamedQueries({
@NamedQuery(name = “Ordemservico.findAll”, query = “SELECT o FROM Ordemservico o”),
@NamedQuery(name = “Ordemservico.findByIdordemservico”, query = “SELECT o FROM Ordemservico o WHERE o.idordemservico = :idordemservico”),
@NamedQuery(name = “Ordemservico.findByIdentificadoros”, query = “SELECT o FROM Ordemservico o WHERE o.identificadoros = :identificadoros”),
@NamedQuery(name = “Ordemservico.findByMes”, query = “SELECT o FROM Ordemservico o WHERE o.mes = :mes”),
@NamedQuery(name = “Ordemservico.findByAno”, query = “SELECT o FROM Ordemservico o WHERE o.ano = :ano”),
@NamedQuery(name = “Ordemservico.findByAssunto”, query = “SELECT o FROM Ordemservico o WHERE o.assunto = :assunto”),
@NamedQuery(name = “Ordemservico.findByPublicitario”, query = “SELECT o FROM Ordemservico o WHERE o.publicitario = :publicitario”),
@NamedQuery(name = “Ordemservico.findByLayoutos”, query = “SELECT o FROM Ordemservico o WHERE o.layoutos = :layoutos”),
@NamedQuery(name = “Ordemservico.findByDataincio”, query = “SELECT o FROM Ordemservico o WHERE o.dataincio = :dataincio”),
@NamedQuery(name = “Ordemservico.findByDatafim”, query = “SELECT o FROM Ordemservico o WHERE o.datafim = :datafim”),
@NamedQuery(name = “Ordemservico.findByDataevento”, query = “SELECT o FROM Ordemservico o WHERE o.dataevento = :dataevento”),
@NamedQuery(name = “Ordemservico.findByProducao”, query = “SELECT o FROM Ordemservico o WHERE o.producao = :producao”),
@NamedQuery(name = “Ordemservico.findByResponsavelos”, query = “SELECT o FROM Ordemservico o WHERE o.responsavelos = :responsavelos”),
@NamedQuery(name = “Ordemservico.findByMateriajornal”, query = “SELECT o FROM Ordemservico o WHERE o.materiajornal = :materiajornal”)})
public class Ordemservico implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = “idordemservico”)
private Integer idordemservico;
@Column(name = “identificadoros”)
private Integer identificadoros;
@Column(name = “mes”)
private Integer mes;
@Column(name = “ano”)
private Integer ano;
@Column(name = “assunto”)
private String assunto;
@Basic(optional = false)
@Column(name = “publicitario”)
private String publicitario;
@Basic(optional = false)
@Column(name = “layoutos”)
private String layoutos;
@Basic(optional = false)
@Column(name = “dataincio”)
@Temporal(TemporalType.DATE)
private Date dataincio;
@Column(name = “datafim”)
@Temporal(TemporalType.DATE)
private Date datafim;
@Column(name = “dataevento”)
@Temporal(TemporalType.DATE)
private Date dataevento;
@Column(name = “producao”)
private String producao;
@Lob
@Column(name = “discricao”)
private String discricao;
@Column(name = “responsavelos”)
private String responsavelos;
@Column(name = “materiajornal”)
private String materiajornal;
@ManyToMany(mappedBy = “ordemservicoList”)
private List ordemproducaoList;
@ManyToMany(mappedBy = “ordemservicoList”)
private List layoutsosList;
@JoinTable(name = “ordemservico_has_usuario”, joinColumns = {
@JoinColumn(name = “ordemservico_idordemservico”, referencedColumnName = “idordemservico”)}, inverseJoinColumns = {
@JoinColumn(name = “usuario_idusuario”, referencedColumnName = “idusuario”)})
@ManyToMany
private List usuarioList;
@JoinColumn(name = “secretaria_idsecretaria”, referencedColumnName = “idsecretaria”)
@ManyToOne(optional = false)
private Secretaria secretariaIdsecretaria;
@OneToMany(cascade = CascadeType.ALL, mappedBy = “ordemservicoIdordemservico”)
private List materiajornalList;

public Ordemservico() {
}

public Ordemservico(Integer idordemservico) {
    this.idordemservico = idordemservico;
}

public Ordemservico(Integer idordemservico, String publicitario, String layoutos, Date dataincio) {
    this.idordemservico = idordemservico;
    this.publicitario = publicitario;
    this.layoutos = layoutos;
    this.dataincio = dataincio;
}

public Integer getIdordemservico() {
    return idordemservico;
}

public void setIdordemservico(Integer idordemservico) {
    this.idordemservico = idordemservico;
}

public Integer getIdentificadoros() {
    return identificadoros;
}

public void setIdentificadoros(Integer identificadoros) {
    this.identificadoros = identificadoros;
}

public Integer getMes() {
    return mes;
}

public void setMes(Integer mes) {
    this.mes = mes;
}

public Integer getAno() {
    return ano;
}

public void setAno(Integer ano) {
    this.ano = ano;
}

public String getAssunto() {
    return assunto;
}

public void setAssunto(String assunto) {
    this.assunto = assunto;
}

public String getPublicitario() {
    return publicitario;
}

public void setPublicitario(String publicitario) {
    this.publicitario = publicitario;
}

public String getLayoutos() {
    return layoutos;
}

public void setLayoutos(String layoutos) {
    this.layoutos = layoutos;
}

public Date getDataincio() {
    return dataincio;
}

public void setDataincio(Date dataincio) {
    this.dataincio = dataincio;
}

public Date getDatafim() {
    return datafim;
}

public void setDatafim(Date datafim) {
    this.datafim = datafim;
}

public Date getDataevento() {
    return dataevento;
}

public void setDataevento(Date dataevento) {
    this.dataevento = dataevento;
}

public String getProducao() {
    return producao;
}

public void setProducao(String producao) {
    this.producao = producao;
}

public String getDiscricao() {
    return discricao;
}

public void setDiscricao(String discricao) {
    this.discricao = discricao;
}

public String getResponsavelos() {
    return responsavelos;
}

public void setResponsavelos(String responsavelos) {
    this.responsavelos = responsavelos;
}

public String getMateriajornal() {
    return materiajornal;
}

public void setMateriajornal(String materiajornal) {
    this.materiajornal = materiajornal;
}

@XmlTransient
public List<Ordemproducao> getOrdemproducaoList() {
    return ordemproducaoList;
}

public void setOrdemproducaoList(List<Ordemproducao> ordemproducaoList) {
    this.ordemproducaoList = ordemproducaoList;
}

@XmlTransient
public List<Layoutsos> getLayoutsosList() {
    return layoutsosList;
}

public void setLayoutsosList(List<Layoutsos> layoutsosList) {
    this.layoutsosList = layoutsosList;
}

@XmlTransient
public List<Usuario> getUsuarioList() {
    return usuarioList;
}

public void setUsuarioList(List<Usuario> usuarioList) {
    this.usuarioList = usuarioList;
}

public Secretaria getSecretariaIdsecretaria() {
    return secretariaIdsecretaria;
}

public void setSecretariaIdsecretaria(Secretaria secretariaIdsecretaria) {
    this.secretariaIdsecretaria = secretariaIdsecretaria;
}

@XmlTransient
public List<Materiajornal> getMateriajornalList() {
    return materiajornalList;
}

public void setMateriajornalList(List<Materiajornal> materiajornalList) {
    this.materiajornalList = materiajornalList;
}

@Override
public int hashCode() {
    int hash = 0;
    hash += (idordemservico != null ? idordemservico.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 Ordemservico)) {
        return false;
    }
    Ordemservico other = (Ordemservico) object;
    if ((this.idordemservico == null && other.idordemservico != null) || (this.idordemservico != null && !this.idordemservico.equals(other.idordemservico))) {
        return false;
    }
    return true;
}

@Override
public String toString() {
    return  assunto ;
}[/code]