Я написал эти два класса:
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 с обновлением, я ожидаю, что сгенерирую таблицу для classeA со ссылкой на classeB (и, конечно, таблицу для classeB). Который не Все, что я получаю, это:
CREATE TABLE classea
(
id
INT (11) NOT NULL AUTO_INCREMENT,
numero
VARCHAR (255) DEFAULT NULL,
ПЕРВИЧНЫЙ КЛЮЧ (id
)
) ENGINE = INNODB AUTO_INCREMENT = 5 CHARSET ПО УМОЛЧАНИЮ = латинский 1
CREATE TABLE classeb
(
id
int (11) NOT NULL AUTO_INCREMENT,
annotazione
varchar (255) DEFAULT NULL,
ПЕРВИЧНЫЙ КЛЮЧ (id
)
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARSET ПО УМОЛЧАНИЮ = латинский 1
Второе: если я сохраню istance classeA с cb, правильно установленным в cb istance, он будет работать, помещая строку в первую таблицу и строку во вторую таблицу. Но при повторном запуске он даже не загружает classeA ....
Пожалуйста, помогите, так как я думаю, что я не правильно понял эту связь. Пожалуйста, не предлагайте использовать аннотации, так как я не могу. Tnx заранее.