0

我有 3 张桌子:

    TABLE BOOKING (
  BOOK_ID  
  PERSONAL_ID                             
  ORGINIZER                      
  TITLE
    PRIMARY KEY ( BOOK_ID )
    FOREIGN KEY ( PERSONAL_ID)
);

TABLE ROOM
(
  ID
  BOOK_ID
  FROM                  
  UNTIL                        
  QUANTITY                   
  PRIMARY KEY ( ID) 
  FOREIGN KEY ( BOOK_ID)
);

TABLE PERSONAL
    (
      ID
      PERSONAL_ID
      NAME
      SURNAME
      EMAIL         
      PRIMARY KEY ( ID) 
    );

我在桌子 ROOM 上映射,例如:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">

<class name="Depp.Domain.Booking, Depp.Core" >
    <id name="ID" unsaved-value="0" column="ID">
        <generator class="native">
            <!--<param name="sequence">GLOBALSEQUENCE</param>-->
        </generator>
    </id>
    <property name="Title" ></property>
    <property name="TitleEnabled" type="yes_no">
        <column name="THEMA_ENABLED"/>
    </property>
    <property name="ORGANIZER" column="PERSONAL_ID" not-null="true" ></property>
    <bag name="ROOM" inverse="true" lazy="true" cascade="all-delete-orphan" >
        <key column="BOOK_ID"/>
        <one-to-many class="Depp.Domain.ROOM, Depp.Core"/>
    </bag>

</class>

我的问题是如何映射表格PERSONAL?我的问题是PERSONAL没有外键所以我不知道如何映射PERSONAL。我需要从该表中获取NAME,SURNAME和。EMAIL

希望可以有人帮帮我

谢谢!

4

2 回答 2

2

Booking 和 Personal 之间的关联可以映射为单向多对一关联

使用property-ref属性指定要加入的个人主键以外的字段,在您的情况下,它是对应于数据库列 PERSONAL_ID 的 personalId 属性,而不是 Personal 类的 ID。

属性参考(可选)

连接到此外键的关联类的属性的名称。如果未指定,则使用关联类的主键。

在 Hibernate 上查看这个 stackoverflow 问题- 为什么使用多对一来表示一对一?

映射

<class name="Booking" >
    <id name="ID" unsaved-value="0" column="ID">
        <generator class="native">
            <!--<param name="sequence">GLOBALSEQUENCE</param>-->
        </generator>
    </id>
    ...
    <many-to-one name="personal" column="PERSONAL_ID"   property-ref="personalId" not-null="true"/>
    ...
</class>

<class name="Personal">
    <id name="id" column="ID">
        <generator class="native"/>
    </id>
    
    <property name="personalId" column="personal_id" />
    <property name="name" />
    <property name="surname" />
    <property name="email" />
    
</class>

爪哇

public class Booking{

    private Long id;

    private Personal personal;
    ...
}



public class Personal 
{
    Long id;
        
    private Long personalId;   
    private String name;        
    private String surname;
    private String email;
}
于 2012-08-04T15:57:40.997 回答
0

如何使用 HQL 获取该表对象的列表?要获取映射对象,必须定义 FK 不是吗,否则 hibernate 将如何映射列?

于 2012-08-03T06:10:28.857 回答