首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多对多NHibernate

多对多NHibernate
EN

Stack Overflow用户
提问于 2010-04-26 22:13:05
回答 1查看 192关注 0票数 0

当涉及到映射多对多关系时,我在使用NHibernate时遇到了一些问题,特别是这个关系。

我有一个Category表,每个父级可以根据需要拥有任意多个子级,它也可以是父级。

当我试图从category表中选择一些东西时,我得到一个错误:

错误: 42601:在或附近出现语法错误。

你有没有机会弄清楚抛出这个错误的原因?

THanks很多人

以下是精选

代码语言:javascript
复制
System.Collections.IList resultado2 = sessao.Find("select c.IdCategoria,c.NomeCategoria,c.CategoriasFilhas from Categoria c");

这是桌子

代码语言:javascript
复制
CREATE TABLE category
(
    id_cat serial not null,
    id_cat_p integer not null,
    nm_cat string (256) not null,
    ...
);

我的c#类

代码语言:javascript
复制
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; }
    }
}

这是映射

代码语言:javascript
复制
<?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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-26 22:25:28

可能是您的select语法使用的是SQL,而不是HQL (如下所示):

代码语言:javascript
复制
results = session.Find(
        "from nhRegistration.UniversityClass as
        uc where personid is null");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2714118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档