Pessoal já tentei de TUDO quase, @onetoone com @primarykeyjoincolumn e @secondarytable etc
Mas ocorre o seguinte erro:
java.lang.IllegalArgumentException: org.hibernate.TypeMismatchException: Provided id of the wrong type for class br.com.totall.entidades.TtCli. Expected: class br.com.totall.entidades.TtCliPK, got class br.com.totall.entidades.TtSpcPK
Ao tentar fazer esse OQL:
final StringBuffer sql = new StringBuffer();
sql.append(“SELECT spc \n”);
sql.append(" FROM TtSpc spc “);
sql.append(” JOIN FETCH \n");
sql.append(" spc.ttCli cli \n");
sql.append(" Where cli.nomcli like ‘%M’ \n");
final Query query = em.createQuery(sql.toString());
listaTtSpc = query.getResultList();
As tabelas ( o que interessa) : TT_SPC tem um foreign key para TT_CLI
@Entity
@Table(name = “tt_spc”)
public class TtSpc implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
// @PrimaryKeyJoinColumn
protected TtSpcPK ttSpcPK;
@PrimaryKeyJoinColumn/*(value = {
@PrimaryKeyJoinColumn(name="filcli", referencedColumnName="filcli"),
@PrimaryKeyJoinColumn(name="codcli", referencedColumnName="codcli")})*/
@OneToOne
private TtCli ttCli;
// ISSO QUE ME INTERESSA, obter TtCli
}
Chave embedded de TT_SPC
@Embeddable
public class TtSpcPK implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "filcli", nullable = false)
private String filcli;
@Column(name = "codcli", nullable = false)
private String codcli;
/** Cria uma nova instância de TtSpcPK */
public TtSpcPK() {}
/**
* Cria uma nova instância de TtSpcPK com os valores especificados.
*
* @param codcli
* o codcli do TtSpcPK
* @param filcli
* o filcli do TtSpcPK
*/
public TtSpcPK(final String codcli,
final String filcli) {
this.codcli = codcli;
this.filcli = filcli;
}
}
AGORA a tabela TT_Cli
@Entity
@Table(name = “tt_cli”)
private static final long serialVersionUID = 1L;
/**
* Campo de chave prim�ria embutido
*/
@EmbeddedId
protected TtCliPK ttCliPK;
CHAVE DE TT_CLI
@Embeddable
public class TtCliPK implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "filcli", nullable = false)
private String filcli;
@Column(name = "codcli", nullable = false)
private String codcli;
/** Creates a new instance of TtCliPK */
public TtCliPK() {}
/**
* Cria uma nova instância de TtCliPK com os valores especificados.
*
* @param codcli
* o codcli do TtCliPK
* @param filcli
* o filcli do TtCliPK
*/
public TtCliPK(final String codcli,
final String filcli) {
this.codcli = codcli;
this.filcli = filcli;
}
POR FAVOR, alguém me ajuda
as anotações @secondaryTable eu tava testando e não funcionou, nem a @PrimaryKeyJoinColumn