Замедленная привязка Hibernate Mapping - передача неверного имени столбца для подкласса - PullRequest
1 голос
/ 22 июня 2011

Я закончил после лета скриншотов nhibernate и пытаюсь преобразовать его в беглый, просто ради знаний.

У меня есть два класса (очень просто)

public class Customer { ... }
public class PreferredCustomer : Customer { ... }

Они следуют table per sub class стратегии и поэтому беглое отображение таково:

CustomerMap - 
  //nothing related to PreferredCustomer - the spec says not required
public class PreferredCustomerMap : SubclassMap<PreferredCustomer>
{
    Map(x => x.CustomerSince);
    Map(x => x.OrderDiscountRate);
}

Вот так.Мой тест не прошел, после проверки, он жаловался, что sql не может найти столбец customer_id

это sql, созданный hibernate:

SELECT  customer0_.CustomerId as CustomerId1_0_, 
   customer0_.Version as Version1_0_, 
   customer0_.Firstname as Firstname1_0_, 
   customer0_.Lastname as Lastname1_0_, 
   customer0_1_.CustomerSince as Customer2_2_0_, 
   customer0_1_.OrderDiscountRate as OrderDis3_2_0_, 
       //here, customer0_1_.customer_id needs to be CustomerID really.
   case when customer0_1_.Customer_id is not null then 1 when customer0_.CustomerId is not null then 0 end as clazz_0_ 
    FROM [Customer] customer0_ left outer join [PreferredCustomer] customer0_1_ on customer0_.CustomerId=customer0_1_.Customerid 
    WHERE customer0_.Customer_Id=1

Он явно делает это только на присоединенной таблице PreferredCustomer,Не могу найти, что должно быть сделано.

Любые идеи, пожалуйста?

Редактировать: как я могу прочитать XML, созданный на беглом языке?это может быть хорошим началом.

1 Ответ

2 голосов
/ 22 июня 2011

Вам нужен вызов KeyColumn("CustomerID"); в ваших картах Subclass.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...