当前位置: 首页 > 知识库问答 >
问题:

如何在Hibernate中使用额外的列映射多对多关系

张啸
2023-03-14

我想使用XML映射在Hibernate中映射多对多的关系。
我有两个类,VotoryCient。我想创建一个链接表Reservation女巫将包含复合键(idClient, idVo的)和3个额外的列(dateReservation, duree, prix)

共有2个答案

阚英睿
2023-03-14

我这样做,是真的吗?:

Client.java:

@ManagedBean
@ViewScoped
public class Client implements Serializable
{
private static final long serialVersionUID = 1L;    
private Long idClient;
private String nom;
private String prenom;
private String cin;
private String adresse;
private String login;
private String pass;
private String numTel;
private Set<Voiture> voitures=new HashSet<Voiture>();
}

客户hbm。xml:

 <?xml version="1.0"?>
 <!DOCTYPE hibernate-mapp`ing PUBLIC
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="dao.Client" table="CLIENTS" >
<id name="idClient" column="ID_CLIENT">
<generator class="native"></generator>
</id>
<property name="nom" column="NOM"></property>
<property name="prenom" column="PRENOM"></property>
<property name="cin" column="CIN"></property>
<property name="adresse" column="ADRESSE"></property>
<property name="login" column="LOGIN"></property>
<property name="pass" column="PASS"></property>
<property name="numTel" column="NUM_TEL"></property>
    <set name="voitures" 
        lazy="true"
        cascade="all-delete-orphan">
       <key column="ID_VOITURE" />
       <one-to-many class="voiture"/>
    </set>
    </class> 

Voiture。java:

 @ManagedBean
 @ViewScoped
 public class Voiture implements Serializable {
 private static final long serialVersionUID = 1L;
 private Long idVoiture;
 private String marque;
 private String moteur;
 private String type;
 private Long annee;
 private Long places;
 private String boite;
 private String climatisation;
 private Double prix;
 private String dispo;
 private String image;
 private Set<Client> clients=new HashSet<Client>();
 }

Voiture。hbm。xml:

 <?xml version="1.0"?>
 <!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 <hibernate-mapping>
 <class name="dao.Voiture" table="VOITURES">
 <id name="idVoiture" column="ID_VOITURE">
 <generator class="native"></generator>
 </id>
 <property name="marque" column="MARQUE"></property> 
 <property name="type" column="TYPE"></property>
 <property name="prix" column="PRIX"></property>
 <property name="dispo" column="DISPO"></property> 
 <property name="climatisation" column="CLIMATISATION"></property>
 <property name="boite" column="BOITE"></property>   
 <property name="annee" column="ANNEE"></property>
 <property name="image" column="IMAGE"></property>
 <property name="places" column="PLACES"></property>
 <property name="moteur" column="MOTEUR"></property>
 <set name="clients" lazy="true" cascade="all-delete-orphan">
       <key column="ID_VOITURE" />
       <one-to-many class="client"/>
 </set>
 </class>
</hibernate-mapping>

预订java:

 @ManagedBean
 @ViewScoped
 public class Reservation implements Serializable 
 {
 private static final long serialVersionUID = 1L;
 private Long idClient;
 private Long idVoiture;
 private Date dateReservation;
 private Long duree;
 private double prix_total;
 }

重新侵蚀。hbm。xml:

 <?xml version="1.0"?>
 <!DOCTYPE hibernate-mapping PUBLIC
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 <hibernate-mapping>
 <class name="dao.Reservation" table="RESERVATIONS">
 <composite-id>    
    <key-many-to-one name="idClient" column="ID_CLIENT" class="CLIENT"/>
    <key-many-to-one name="idVoiture" column="ID_VOITURE" class="VOITURE"/>
 </composite-id>
 <property name="dateReservation" column="DATE_RESERVATION"/>
 <property name="duree"  column="DUREE"  />
 <property name="prix_total"  column="PRIX_TOTAL" />
 </class>
 </hibernate-mapping>
丰赞
2023-03-14

将其映射为多对一的复合元素:

<list ... table="LinkTable">
  ...
  <key>
    <column name="idClient" />
  </key>
  <composite-element class="MyLinkType">
    <property name="DateReservation" />
    <property name="Duree" />
    <property name="Prix" />
    <many-to-one name="Voiture" column="idVoiture" class="Voiture" />
  </composite-element>
</list>

仔细考虑如何使其双向。复合元素映射属于列表所有者的属性。

或者,使链接表成为自己的实体。

 类似资料:
  • 您好,我有多对多映射,在联接表中有额外的列。表结构如下所示。 关系如下 链接 我创建了如下POJO类 Vendor.java 学生。爪哇 测试。爪哇 供应商est.java 供应商学生测试PK。爪哇 Hibernate映射文件,如下所示 vendor.hbm.xml vendor\u student\u测试。hbm。xml 大学生hbm。xml 测验hbm。xml 我刚开始Hibernate,这是

  • 我正在hibernate的帮助下开发一个电子购物程序。因为我是jsp、servlet、hibernate的新手,我不知道如何使用关系表中的附加列进行多对多关系映射。我已经阅读了几篇教程,但其中大部分都是关于hibernate社区的注释映射和文档,但没有一篇适合我的情况。 我有三个表,分别是电影信息表、订单详情表和订单详情表(关系表),其中订单详情表的结构如下所示。 我正在尝试使用四个POJO类来实

  • 1. 前言 本节课,咱们一起继续聊聊多对多关联映射。通过本节课程,你将了解到: 多对多关联映射的实现; 双向多对多关联映射的实现。 2. 多对多关联映射 首先了解表中的多对多关系,学生表中的数据和课程表中的数据就存在多对多关系。 一名学生可以选修多门课程,一门课程可以供多名学生选修。 数据库通过主外键的机制描述表中的数据之间的关系。对于存在多对多关系的数据表,借助于中间表,分拆成两个一对多(或者多

  • 问题内容: 我想使用链接表在Hibernate中映射多对多。我有两个类,例如Parent和Child类: 我用三列的链接表(link_table) ,和。该数据库是SQL Server,并且ID类型是uniqueidentifier。因此,我通常将guid用于id字段。 你怎么能实现这个使用 标签,如果这是要使用正确的标签?您知道有什么好的文档可以做到这一点吗? 我目前正在获取Constraint

  • 1. 前言 通过本节课程的学习,你将发现关联对象之间的微妙关系。相信这种关系对你更深入地认识 HIbernate 有很大的帮助。 通过本节课程,你将了解到: 多对多双向关联映射中哪一方是关系维系者; 级联操作与关系维系者。 2. 关系维系者 新学期开始了,同学们选择了各自喜欢的课程,现在为学生添加选修课程的任务就要落在 Hibernate 的身上。一起来看看 Hibernate 是如何完成这个任务

  • 问题内容: 我的数据库包含3个表:User和Service实体具有多对多关系,并与SERVICE_USER表联接在一起,如下所示: 用户-SERVICE_USER-服务 SERVICE_USER表包含附加的BLOCKED列。 执行这种映射的最佳方法是什么?这些是我的实体类 我遵循以下示例http://giannigar.wordpress.com/2009/09/04/m … using-jpa