2010-04-26 5 views
0

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

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

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

ОШИБКА: 42601: ошибка синтаксиса в или рядом с «»

Любой шанс, что вы можете понять, почему это ошибка?

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

Heres избранных

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, 
    ... 
); 

мой C# класс

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> 

ответ

2

Это может быть, что ваш синтаксис для выбора в SQL, а не HQL (см):

results = session.Find(
     "from nhRegistration.UniversityClass as 
     uc where personid is null"); 
+0

я постараюсь лет смотреть дальше в HQL. Я все еще новичок в Hibernate: D Thanks –

+0

Теперь он работает. Спасибо. Вот следующий запрос, который я искал: «от Categoria c где c.IdCategoria = 1» таким образом выбрав только родителя и его дочерние элементы. Другой запрос дал мне список всех узлов и дочерних элементов, повторяя кучу информации. –

+0

Я рад, что это сработало – Burt

Смежные вопросы