Много ко многим NHibernate - PullRequest
0 голосов
/ 26 апреля 2010

У меня возникают некоторые проблемы с NHibernate, когда дело касается отображения многих на многие отношения, особенно этот.

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

Когда я пытаюсь выбрать что-то из таблицы категорий, я получаю сообщение об ошибке:

ОШИБКА: 42601: синтаксическая ошибка в или около "."

Есть ли шанс, что вы поймете, почему выдает эту ошибку?

Большое спасибо, ребята

Вот избранник

System.Collections.IList resultado2 = sessao.Find("select c.IdCategoria,c.NomeCategoria,c.CategoriasFilhas from Categoria c");

Вот стол

CREATE TABLE category
(
    id_cat serial not null,
    id_cat_p integer not null,
    nm_cat string (256) not null,
    ...
);

my c # class

public class Categoria
{
    private int idCategoria;
    private string nmCategoria;
    private int nivelCategoria;
    private int rankCategoria;

    private IList<Categoria> categoriasFilhas;

    public virtual int IdCategoria
    {
        get { return this.idCategoria; }
        set { this.idCategoria = value; }
    }

    public virtual string NomeCategoria
    {
        get { return this.nmCategoria; }
        set { this.nmCategoria = value; }
    }

    public virtual int NivelCategoria
    {
        get { return this.nivelCategoria; }
        set { this.nivelCategoria = value; }
    }

    public virtual int RankCategoria
    {
        get { return this.rankCategoria; }
        set { this.rankCategoria = value; }
    }

    public virtual IList<Categoria> CategoriasFilhas
    {
        get { return this.categoriasFilhas; }
        private set { this.categoriasFilhas = value; }
    }
}

А вот и карта

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="GeoBiblio" namespace="GeoBiblio.Classes.Orm">
  <class name="Categoria" table="categoria" discriminator-value="categoria">
    <id name="IdCategoria" type="Int32" column="id_categoria" unsaved-value="0" access="property">
      <generator class="sequence">
        <param name="sequence">categoria_id_categoria_seq</param>
      </generator>
    </id>
    <property name="NomeCategoria" column="nm_categoria" type="String" unique="true"/>
    <property name="NivelCategoria" column="nivel_categoria" type="Int32"/>
    <property name="RankCategoria" column="rank_categoria" type="Int32"/>
    <bag name="CategoriasFilhas" table="categoria" fetch="select" inverse="true" lazy="true">
      <key column="id_categoria_pai"/>
      <many-to-many class="Categoria" column="id_categoria" order-by="rank_categoria"/>
    </bag>
  </class>
</hibernate-mapping>

1 Ответ

2 голосов
/ 26 апреля 2010

Возможно, ваш синтаксис для выбора в SQL, а не HQL (см. Ниже):

results = session.Find(
        "from nhRegistration.UniversityClass as
        uc where personid is null");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...