Ola pessoal, to começando a usar hibernate agora, já fiz os mapeamentos a mão e tudo mais, to usando Myeclipse pra gerar os mapeamentos e beans, o que acontece é que não consigo gerar somente uma classe bean, toda vez ele gera um bean a mais com as chaves primarias separadas. Alguem sabe como configurar isso?
Olá Vanzella,
olha nunca usei o MyEclipse para gerar os HBMs do hibernate não mas, desconfio que o motivo do seu problema seja pela forma como esses HBMs estão sendo gerados.
Joga aí o conteúdo de um dos HBMs que estão te dando esse problema.
[]'s
ok, segue o hbm de uma tabela.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
<class name="beans.Baicd" table="BAICD" schema="CIOSP">
<composite-id name="id" class="beans.BaicdId">
<key-property name="munpmcod" type="java.lang.Long">
<column name="MUNPMCOD" precision="9" scale="0" />
</key-property>
<key-property name="baipmcod" type="java.lang.Long">
<column name="BAIPMCOD" precision="9" scale="0" />
</key-property>
</composite-id>
<property name="baipmnom" type="java.lang.String">
<column name="BAIPMNOM" length="25" />
</property>
<property name="baisstcod" type="java.lang.Long">
<column name="BAISSTCOD" precision="9" scale="0" />
</property>
</class>
</hibernate-mapping>
são gerados 2 beans:
package beans;
/**
* Baicd generated by MyEclipse - Hibernate Tools
*/
public class Baicd implements java.io.Serializable {
// Fields
private BaicdId id;
private String baipmnom;
private Long baisstcod;
// Constructors
/** default constructor */
public Baicd() {
}
/** minimal constructor */
public Baicd(BaicdId id) {
this.id = id;
}
/** full constructor */
public Baicd(BaicdId id, String baipmnom, Long baisstcod) {
this.id = id;
this.baipmnom = baipmnom;
this.baisstcod = baisstcod;
}
// Property accessors
public BaicdId getId() {
return this.id;
}
public void setId(BaicdId id) {
this.id = id;
}
public String getBaipmnom() {
return this.baipmnom;
}
public void setBaipmnom(String baipmnom) {
this.baipmnom = baipmnom;
}
public Long getBaisstcod() {
return this.baisstcod;
}
public void setBaisstcod(Long baisstcod) {
this.baisstcod = baisstcod;
}
}
package beans;
/**
* BaicdId generated by MyEclipse - Hibernate Tools
*/
public class BaicdId implements java.io.Serializable {
// Fields
private Long munpmcod;
private Long baipmcod;
// Constructors
/** default constructor */
public BaicdId() {
}
/** full constructor */
public BaicdId(Long munpmcod, Long baipmcod) {
this.munpmcod = munpmcod;
this.baipmcod = baipmcod;
}
// Property accessors
public Long getMunpmcod() {
return this.munpmcod;
}
public void setMunpmcod(Long munpmcod) {
this.munpmcod = munpmcod;
}
public Long getBaipmcod() {
return this.baipmcod;
}
public void setBaipmcod(Long baipmcod) {
this.baipmcod = baipmcod;
}
public boolean equals(Object other) {
if ( (this == other ) ) return true;
if ( (other == null ) ) return false;
if ( !(other instanceof BaicdId) ) return false;
BaicdId castOther = ( BaicdId ) other;
return ( (this.getMunpmcod()==castOther.getMunpmcod()) || ( this.getMunpmcod()!=null && castOther.getMunpmcod()!=null && this.getMunpmcod().equals(castOther.getMunpmcod()) ) )
&& ( (this.getBaipmcod()==castOther.getBaipmcod()) || ( this.getBaipmcod()!=null && castOther.getBaipmcod()!=null && this.getBaipmcod().equals(castOther.getBaipmcod()) ) );
}
public int hashCode() {
int result = 17;
result = 37 * result + ( getMunpmcod() == null ? 0 : this.getMunpmcod().hashCode() );
result = 37 * result + ( getBaipmcod() == null ? 0 : this.getBaipmcod().hashCode() );
return result;
}
}
Vanzella,
é porque você tem uma chave primária composta.
Você precisa ter um tipo para a sua chave primária. Isso sempre vai acontecer qdo for chave composta.
Qdo vc for atribuir a chave primária a sua classe Baicd, não poderá atribuir um tipo primitivo (Int, String, etc). Vai ter que atribuir um tipo próprio, construído pelo hibernate para representar a chave primária da sua classe.
Mais p/ frente, qdo estiver utilizando sua classe, isso vai ficar mais claro.
[]'s
hum! ok, valeu pela dica.