如何在没有外键的情况下映射表

时间:2012-08-07 07:32:34

标签: hibernate nhibernate nhibernate-mapping hibernate-mapping

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

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

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

希望有人可以提供帮助。

我的映射到目前为止看起来像这样:

<?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>

    <many-to-one name="Personal" class="Book.Domain.Booking, Book.Core" column="Personal_ID"
            not-null="true" />

  </class>


  <class name="Book.Domain.Personal, Book.Core">
    <id name="id" column="ID">
      <generator class="native"/>
    </id>

    <component name="Booker" class="Book.Domain.Person, Book.Core">
      <property name="Name" column="NN" />
      <property name="Surname" column="VN"/>
      <property name="Email" column="EMAIL" />
      <property name="Phone" column="TEL" />
    </component>
  </class>

</hibernate-mapping>

如果我使用多对一关系,网站就会崩溃。

1 个答案:

答案 0 :(得分:1)

你写道:

  

网站崩溃

这不是一个详细的错误报告;-)。如果您提供更多详细信息,它可以帮助我们。

在任何情况下,从映射我可以看到一件可能是错误的事情:在<many-to-one />中你需要指出你要映射的属性的类(“个人”),而不是包含类( “预定”)。尝试以下几点:

<many-to-one name="Personal" 
    class="Book.Domain.Personal, Book.Core" 
    column="Personal_ID"
    not-null="true" />

主要区别在于class属性。我想你甚至可以完全省略该属性,让NHibernate从实体的属性类型中推断它。

有关详细信息,请参阅many-to-one文档。