External NHibernate Card

I have two tables: Vehicle and Make. These two connections are connected using MakeId as a foreign key on the Vehicle table. My mapping file is similar to this

    <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping  xmlns="urn:nhibernate-mapping-2.2">
      <class name="Demo.Business.Objects.Vehicle, Demo.Business.Objects" table="Vehicle" >
        <id name="VehicleId" type="int" >
          <generator class="native"  />
        </id>
        <property name="RegNumber" type="String" />
        <property name="VehicleId" type="int" />
        <property name="CustomerId" type="int" />

        <join table="Make"  fetch="join">

          <key column="MakeId" foreign-key="MakeId"/>
          <property name="Description"  type="String"  />
        </join>
      </class>
    </hibernate-mapping>

I would think that this would join the two tables of the make identifier, however the SQL created by ios tries the following connection: vehicle.vehicleid = make.makeid.

How can I make this work? That is, I expect:

    select * from Vehicle
    inner join Make on Make.MakeId = Vehicle.Make Id
+3
source share
1 answer

You need to render the Make class differently:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping  xmlns="urn:nhibernate-mapping-2.2">
  <class name="Demo.Business.Objects.Vehicle, Demo.Business.Objects" table="Vehicle" >
    <id name="VehicleId" type="int" >
      <generator class="native"  />
    </id>
    <property name="RegNumber" type="String" />
    <property name="VehicleId" type="int" />
    <property name="CustomerId" type="int" />
    <many-to-one name="Make" column="MakeId"/>
  </class>
  <class name="(blahblah).Make, blahblah">
    <id name="MakeId" type="int">
      <generator class="native" />
    </id>

    <property name="Description"  type="String"  />
  </class>
</hibernate-mapping>

Your Vehicle class should have a Make property of type Make.

0
source

Source: https://habr.com/ru/post/1719990/


All Articles