当涉及到映射多对多关系时,我在使用NHibernate时遇到了一些问题,特别是这个关系。
我有一个Category表,每个父级可以根据需要拥有任意多个子级,它也可以是父级。
当我试图从category表中选择一些东西时,我得到一个错误:
错误: 42601:在或附近出现语法错误。
你有没有机会弄清楚抛出这个错误的原因?
THanks很多人
以下是精选
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>发布于 2010-04-26 22:25:28
可能是您的select语法使用的是SQL,而不是HQL (如下所示):
results = session.Find(
"from nhRegistration.UniversityClass as
uc where personid is null");https://stackoverflow.com/questions/2714118
复制相似问题