我寫這兩個類:爲什麼這個簡單的休眠樣本不起作用?
public class ClasseA {
Integer id;
String numero;
ClasseB cb;
public ClasseB getCb() {
return cb;
}
public void setCb(ClasseB cb) {
this.cb = cb;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNumero() {
return numero;
}
public void setNumero(String numero) {
this.numero = numero;
}
}
和
public class ClasseB {
Integer id;
String annotazione;
public String getAnnotazione() {
return annotazione;
}
public void setAnnotazione(String annotazione) {
this.annotazione = annotazione;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
正如你可以看到ClasseA有到ClasseB參考。
這是映射:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class dynamic-insert="false" dynamic-update="false" mutable="true" name="ClasseA" optimistic-lock="version" polymorphism="implicit" select-before-update="false">
<id name="id" type="java.lang.Integer">
<column name="id"/>
<generator class="identity"/>
</id>
<property name="numero" type="java.lang.String">
<column name="numero"/>
</property>
<one-to-one cascade="all" class="ClasseB" name="cb"/>
</class>
<class dynamic-insert="false" dynamic-update="false" mutable="true" name="ClasseB" optimistic-lock="version" polymorphism="implicit" select-before-update="false">
<id name="id" type="java.lang.Integer">
<column name="id"/>
<generator class="identity"/>
</id>
<property name="annotazione" type="java.lang.String">
<column name="annotazione"/>
</property>
</class>
</hibernate-mapping>
兩個事情沒有達到預期效果:
首先,因爲我使用hdb2ddl與更新我預期的那樣產生一個關於classeB的表格(當然還有一個關於classeB的表格)。不是。我得到的是:
CREATE TABLE
classea
(id
INT(11)NOT NULL AUTO_INCREMENT,numero
VARCHAR(255)DEFAULT NULL,
PRIMARY KEY(id
) )ENGINE = INNODB AUTO_INCREMENT = 5的默認字符集= LATIN1CREATE TABLE
classeb
(id
INT(11)NOT NULL AUTO_INCREMENT,annotazione
VARCHAR(255)DEFAULT NULL, PRIMARY KEY(id
) )ENGINE = InnoDB的AUTO_INCREMENT = 5的默認字符集= LATIN1第二:如果我救classeA與CB正確設置爲CB istance的istance,將工作放一排第一,排在第二表。但在retrivial它甚至不加載classeA ....
請幫助,因爲我認爲我不明白這種類型的協會。請不要建議使用註釋,因爲我不能。 Tnx提前。