Je vais maintenant faire de l'ingénierie prospective, la relation un-à-plusieurs entre les clients utilisateurs et les commandes de commande
Voici leurs classes d'entités
package com.cw.entity;
import java.util.Set;
public class User implements java.io.Serializable {
private Integer id;
private String username;
private String password;
private Set<Order> order;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Set<Order> getOrder() {
return order;
}
public void setOrder(Set<Order> order) {
this.order = order;
}
public User(String username, String password, Set<Order> order) {
super();
this.username = username;
this.password = password;
this.order = order;
}
}
package com.cw.entity;
public class Order implements java.io.Serializable {
private Integer id;
private User user;
private String shop;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getShop() {
return shop;
}
public void setShop(String shop) {
this.shop = shop;
}
public Order(User user, String shop) {
super();
this.user = user;
this.shop = shop;
}
}
Ce qui suit est le fichier de configuration hbm.xml
<?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">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.cw.entity.User" table="user" catalog="test">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="username" type="java.lang.String">
<column name="username" />
</property>
<property name="password" type="java.lang.String">
<column name="password" />
</property>
<set name="order" cascade="save-update" inverse="true">
<key column="order"></key>
<one-to-many class="com.cw.entity.Order"/>
</set>
</class>
</hibernate-mapping>
<?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">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.cw.entity.Order" table="order" catalog="test">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<!-- <property name="user" type="com.cw.entity.User">
<column name="user" />
</property> -->
<property name="shop" type="java.lang.String">
<column name="shop" />
</property>
<many-to-one name="user" class="com.cw.entity.User" cascade="all" column="user"></many-to-one>
</class>
</hibernate-mapping>
J'ai vérifié d'autres configurations et il n'y a pas de problème, hibernate.cfg.xml convient également (deux éléments de configuration du modèle d'entité et la configuration hbm2ddl ont été ajoutés), mais l'exécution
package com.cw.entity;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.hibernate.id.Configurable;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Configuration configure = new Configuration().configure();
SessionFactory buildSessionFactory = configure.buildSessionFactory();
Session session = buildSessionFactory.openSession();
Transaction tx = session.beginTransaction();
tx.commit();
}
}
Après cela, seule la table utilisateur a été générée, mais la table de commande n'a pas été générée. Quel est le problème maintenant ?
Utilisez les commentaires, désormais des commentaires populaires