Pessoal, estou postando as classes que criei, elas não estão com os relacionamentos porque de tanto testar possibilidades sem sucesso acabei por não saber por onde começar, não sei se o problema é que estou pensando fora de OO, mas sempre vejo o resultado como errado, além de não ter conseguido gerá-los quando em uma tabela existem 2 chaves primárias e na outra apenas uma, como é o caso do relacionamento entre security_users e security_groupings. Sei que o post ficou grande mas achei que seria melhor se colocado desta forma.
Agradeço desde já pela ajuda.
Classe Usuario:
package com.model;
import java.util.Calendar;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity
@Table(name="usuario")
@NamedQueries({
	@NamedQuery(name="Usuario.findAllUsuarios", query="select u from Usuario u"),
	@NamedQuery(name="Usuario.findUsarioByLogin", query="select u from Usuario u where u.idLogin = :idLogin")
})
public class Usuario {
	
	public static final String FIND_ALL_USERS = "Usuario.findAllUsuarios";
	public static final String FIND_USER_BY_LOGIN = "Usuario.findUsuariorByLogin";
	
	@Id
	@Column(name="id_login", unique=true)
	private String idLogin;
	
	@Column(name="id_empre")
	private int idEmpresa;
	@Column(name="id_filia")
	private int idFilial;
	@Column(name="id_colab")
	private int idColaborador;
	@Column(name="id_clifo")
	private int idCliente;
	@Column(name="id_estab")
	private int idEstabelecimento;
	@Column(name="id_ctato")
	private int idContato;
	@Column(name="cd_senha")
	private String cdSenha;
	@Column(name="dt_cadas")
	private Calendar dtCadastro;
	@Column(name="vl_suppl_house")
	private double vlSupplyHouse;
	@Column(name="st_usuar_web")
	private String stUsuarioWeb;
	@Column(name="dt_alter_senha")
	private Calendar dtAlteracaoSenha;
	@Column(name="st_alter_senha")
	private String stAlteracaoSenha;
	@Column(name="st_logad")
	private String stLogado;
	@Column(name="qt_logins")
	private int qtLogins;
	@Column(name="st_visua_gesto")
	private String stVisualizacaoGestor;
	@Column(name="tp_visua_gesto_ext")
	private String tpVisualizacaoGestorExterno;
	@Column(name="qt_restr")
	private int qtRestricoes;
	
	// Getters and Setters
	@Override
	public int hashCode(){
		return idLogin.hashCode();
	}
	@Override
	public boolean equals(Object obj) {
		if (obj instanceof Usuario) {
			Usuario usuario = (Usuario) obj;
			return usuario.getIdLogin().equals(getIdLogin());
		}
		return false;
	}
}
Classe Security_Users:
package com.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity
@Table(name="security_users")
@NamedQueries({
	@NamedQuery(name="Security_Users.findAllSecUsers", query="select s from Security_Users s"),
	@NamedQuery(name="Security_Users.findUserByDescription", query="select s from Security_Users s where s.description = :description"),
	@NamedQuery(name="Security_Users.findDescriptionByUser", query="select s from Security_Users s where s.name = :name")
	})
public class Security_Users {
	public static final String FIND_ALL_SEC_USERS = "Security_Users.findAllSecUsers";
	public static final String FIND_USER_BY_DESCRIPTION = "Security_Users.findUserByDescription";
	public static final String FIND_DESCRIPTION_BY_USER = "Security_Users.findDescriptionByUser";
	
	@Id
	@Column(unique=true)
	private String name;
	
	private String description;
	private int priority;
	
	@Column(name="user_type")
	private int userType;
	
	// Getters and Setters
	
	public int hashCode(){
		return name.hashCode();
	}
	
	public boolean equals(Object obj) {
		if (obj instanceof Security_Users) {
			Security_Users su = (Security_Users) obj;
			return su.getName().equals(getName());
		}
		return false;
	}
}
Classe Security_Groupings:
package com.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity
@Table(name="security_groupings")
@NamedQueries({
	@NamedQuery(name="Security_Groupings.findAllSecGroupings", query="select s from Security_Groupings s"),
	@NamedQuery(name="Security_Groupings.findGroupByLogin", query="select s from Security_Groupings s where s.userName = :userName"),
	@NamedQuery(name="Security_Groupings.findLoginByGroup", query="select s from Security_Groupings s where s.groupName = :groupName")
})
@IdClass(Security_GroupingsID.class)
public class Security_Groupings {
	
	public static final String FIND_ALL_SEC_GROUPINGS = "Security_Groupings.findAllSecGroupings";
	public static final String FIND_GROUP_BY_LOGIN = "Security_Groupings.findGroupByLogin";
	public static final String FIND_LOGIN_BY_GROUP = "Security_Groupings.findLoginByGroup";
	
	@Id
	@Column(name="group_name")
	private String groupName;
	
	@Id
	@Column(name="user_name")
	private String userName;
	
        // Getters and Setters
}
Classe Security_GroupingsId:
package com.model;
import java.io.Serializable;
public class Security_GroupingsID implements Serializable{
	
	private static final long serialVersionUID = 343L;
	
	private String groupName;
	private String userName;
	
	public Security_GroupingsID(){	}
	
	public Security_GroupingsID(String groupName, String userName) {
		this.groupName = groupName;
		this.userName = userName;
	}
	public String getGroupName() {
		return groupName;
	}
	public String getUserName() {
		return userName;
	}
	
	@Override
	public int hashCode(){
		return groupName.hashCode() + userName.hashCode();
	}
	
	@Override
	public boolean equals(Object obj){
		if (obj instanceof Security_GroupingsID) {
			Security_GroupingsID secGroupsID = (Security_GroupingsID) obj;
			return secGroupsID.groupName.equals(this.groupName) && secGroupsID.userName.equals(this.userName);
		}
		return false;
	}
}
Classe Colaborador:
package com.model;
import java.util.Calendar;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity
@Table(name="colaborador")
@NamedQueries({
	@NamedQuery(name="Colaborador.findAllColaboradores", query="select c from Colaborador c"),
	@NamedQuery(name="Colaborador.findColaboradorByEmpresa", query="select c from Colaborador c where c.idEmpresa = :idEmpresa"),
	@NamedQuery(name="Colaborador.findColaboradorByEmpresaFilial", query="select c from Colaborador c where c.idEmpresa = :idEmpresa and c.idFilial = :idFilial"),
	@NamedQuery(name="Colaborador.findColaboradorByEmpresaFilialColaborador", query="select c from Colaborador c where c.idEmpresa = :idEmpresa and c.idFilial = :idFilial and c.idColaborador = :idColaborador")
})
@IdClass(ColaboradorId.class)
public class Colaborador {
	
	private static final String FIND_ALL_COLABORADORES = "Colaborador.findAllColaboradores";
	private static final String FIND_COLABORADOR_BY_EMPRESA = "Colaborador.findColaboradorByEmpresa";
	private static final String FIND_COLABORADOR_BY_EMPRESA_FILIAL = "Colaborador.findColaboradorByEmpresaFilial";
	private static final String FIND_COLABORADOR_BY_EMPRESA_FILIAL_COLABORADOR = "Colaborador.findColaboradorByEmpresaFilialColaborador";
	
	@Id
	@Column(name="id_empre")
	private int idEmpresa;
	@Id
	@Column(name="id_filia")
	private int idFilial;
	@Id
	@Column(name="id_colab")
	private int idColaborador;
	@Column(name="id_nivel_organ")
	private String idNivelOrganico;
	@Column(name="id_cargo")
	private int idCargo;
	@Column(name="nm_colab")
	private String nmColaborador;
	@Column(name="st_vincu")
	private String stVinculacao;
	@Column(name="de_ender")
	private String deEndereco;
	@Column(name="de_bairr")
	private String deBairro;
	@Column(name="de_cidad")
	private String deCidade;
	@Column(name="id_regis_estad")
	private String idRegisEstado;
	@Column(name="nu_cep_colab")
	private int nuCEPColaborador;
	@Column(name="nu_ramal_1")
	private int nuRamal1;
	@Column(name="nu_ramal_2")
	private int nuRamal2;
	@Column(name="dt_admis")
	private Calendar dtAdmissao;
	@Column(name="dt_demis")
	private Calendar dtDemissao;
	@Column(name="vl_remun_contr")
	private double vlRemuneracaoContratual;
	@Column(name="id_regis_unida_contr")
	private String idRegisUnidadeContratual;
	@Column(name="nu_telef1")
	private int nuTelefone1;
	@Column(name="nu_telef2")
	private int nuTelefone2;
	@Column(name="de_mail_1")
	private String deMail1;
	@Column(name="de_mail_2")
	private String deMail2;
	@Column(name="nu_ddd")
	private int nuDDD;
	@Column(name="st_usuar_ad")
	private String stUsuarioAD;
	// Getters and Setters
	}
}
Classe ColaboradorId:
package com.model;
import java.io.Serializable;
public class ColaboradorId implements Serializable{
	
	private static final long serialVersionUID = 142L;
	private int idEmpresa;
	private int idFilial;
	private int idColaborador;
	
	public ColaboradorId() { }
	
	public ColaboradorId(int idEmpresa, int idFilial, int idColaborador){
		this.idEmpresa = idEmpresa;
		this.idFilial = idFilial;
		this.idColaborador = idColaborador;
	}
	public int getIdEmpresa() {
		return idEmpresa;
	}
	public int getIdFilial() {
		return idFilial;
	}
	public int getIdColaborador() {
		return idColaborador;
	}
	
	public int hashCode(){
		return idEmpresa + idFilial + idColaborador;
	}
	
	public boolean equals(Object obj){
		if (obj instanceof ColaboradorId) {
			ColaboradorId colaboradorID = (ColaboradorId) obj;
			return colaboradorID.idEmpresa == this.idEmpresa && colaboradorID.idFilial == this.idFilial && colaboradorID.idColaborador == this.idColaborador; 
		}
		return false;
	}
}
Classe Contato_Cliente_Fornecedor:
package com.model;
import java.util.Calendar;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity
@Table(name="contato_cliente_fornecedor")
@NamedQueries({
	@NamedQuery(name="Contato_Cliente_Fornecedor.findAllContatos", query="select c from Contato_Cliente_Fornecedor c"),
	@NamedQuery(name="Contato_Cliente_Fornecedor.findContatoByCliente", query="select c from Contato_Cliente_Fornecedor c where c.idCliente = :idCliente"),
	@NamedQuery(name="Contato_Cliente_Fornecedor.findContatoByClienteEstab", query="select c from Contato_Cliente_Fornecedor c where c.idCliente = :idCliente and c.idEstabelecimento = :idEstabelecimento"),
	@NamedQuery(name="Contato_Cliente_Fornecedor.findContatoByClienteEstabContato", query="select c from Contato_Cliente_Fornecedor c where c.idCliente = :idCliente and c.idEstabelecimento = :idEstabelecimento and c.idContato = :idContato")
})
@IdClass(Contato_Cliente_FornecedorId.class)
public class Contato_Cliente_Fornecedor {
	private static final String FIND_ALL_CONTATOS = "Contato_Cliente_Fornecedor.findAllContatos";
	private static final String FIND_CONTATO_BY_CLIENTE = "Contato_Cliente_Fornecedor.findContatoByCliente";
	private static final String FIND_CONTATO_BY_CLIENTE_ESTAB = "Contato_Cliente_Fornecedor.findContatoByClienteEstab";
	private static final String FIND_CONTATO_BY_CLIENTE_ESTAB_CONTATO = "Contato_Cliente_Fornecedor.findContatoByClienteEstabContato";
	@Id
	@Column(name="id_clifo")
	private int idCliente;
	@Id
	@Column(name="id_estab")
	private int idEstabelecimento;
	@Id
	@Column(name="id_ctato")
	private int idContato;
	@Column(name="nm_ctato")
	private String nmContato;
	@Column(name="de_trata")
	private String deTratamento;
	@Column(name="dt_nasci")
	private int dtNascimento;
	@Column(name="st_emiss_corre")
	private String stEmissaoCorrespondencia;
	@Column(name="de_mail1")
	private String deMail1;
	@Column(name="de_mail2")
	private String deMail2;
	@Column(name="id_regis_cargo")
	private String idRegisCargo;
	@Column(name="id_regis_area_compe")
	private String idRegisAreaCompetencia; 
	@Column(name="dt_desli")
	private Calendar dtDesligamento;
	@Column(name="vl_remun_contr")
	private double vlRemuneracaoContratual;
	@Column(name="id_regis_unida_contr")
	private String idRegisUnidadeContratual;
	// Getters and Setters
	}
}
Classe Contato_Cliente_FornecedorId
package com.model;
import java.io.Serializable;
public class Contato_Cliente_FornecedorId implements Serializable{
	private static final long serialVersionUID = 152L;
	
	private int idCliente;
	private int idEstabelecimento;
	private int idContato;
	public Contato_Cliente_FornecedorId() {
	}
	public Contato_Cliente_FornecedorId(int idCliente, int idEstabelecimento, int idContato) {
		this.idCliente = idCliente;
		this.idEstabelecimento = idEstabelecimento;
		this.idContato = idContato;
	}
	
	public int getIdCliente() {
		return idCliente;
	}
	public int getIdEstabelecimento() {
		return idEstabelecimento;
	}
	public int getIdContato() {
		return idContato;
	}
	
	public int hashCode(){
		return idCliente + idEstabelecimento + idContato;
	}
	
	public boolean equals(Object obj) {
		if (obj instanceof Contato_Cliente_FornecedorId) {
			Contato_Cliente_FornecedorId contatoID = (Contato_Cliente_FornecedorId) obj;
			return contatoID.idCliente == this.idCliente && contatoID.idEstabelecimento == this.idEstabelecimento && contatoID.idContato == this.idContato;
		}
		return false;
	}
}
Grato pela ajuda.