Hibernate não atualiza

5 respostas
juloliveira

Galera,

Eu trabalho com o NHibernate do .NET mas meu erro é primário, porém já me perdi no mapeamento.

Tenho duas classes Avaliação e Questão

public class Avaliacao

{

public virtual int Id { get; set; }

public virtual string Nome { get; set; }

public virtual IList<Questao> Questoes { get; set; }

}
public class Questao

{

public virtual Int32 Id { get; set; }

public virtual String Pergunta { get; set; }

public virtual Avaliacao Avaliacao { get; set; }

}

Estou mapeando da seguinte forma:

<hibernate-mapping xmlns=“urn:nhibernate-mapping-2.2”>

<class name="Kogut.DomainModel.Entidades.Avaliacao, Kogut.DomainModel"

table=“Avaliacoes”>

<id name=“Id” unsaved-value=“0”>

<column name=“idAvaliacao” />

<generator class=“native” />

</id>
&lt;property name="Nome" column="Nome" type="String" length="75"/&gt;

&lt;bag name="Questoes" table="Questoes" inverse="true" cascade="all" lazy="true" &gt;
  &lt;key column="idAvaliacao" foreign-key="fk_aval_tem_quest" /&gt;
  &lt;one-to-many class="Kogut.DomainModel.Entidades.Questao, Kogut.DomainModel" /&gt;
&lt;/bag&gt;

</class>
</hibernate-mapping>

<?xml version=“1.0” encoding=“utf-8” ?>

<hibernate-mapping xmlns=“urn:nhibernate-mapping-2.2”>

<class name=“Kogut.DomainModel.Entidades.Questao, Kogut.DomainModel” table=“Questoes”>

<id name=“Id” unsaved-value=“0”>

<column name=“idQuestao” />

<generator class=“native” />

</id>
&lt;property name="Pergunta" type="String" length="75"/&gt;

&lt;many-to-one name="Avaliacao"
             class="Kogut.DomainModel.Entidades.Avaliacao, Kogut.DomainModel"
             column="idAvaliacao"
             cascade="all"    /&gt;
&lt;/class&gt;

</hibernate-mapping>

Estou tenatndo fazer uns testes e não consigo salvar minhas questões, por exemplo:

Avaliacao a = session.Get<Avaliacao>(1);

Questao q = new Questao();

q.Pergunta = “Qual a capital de São Paulo?”;

q.Avaliacao = a;

a.Questoes.Add(q);

session.Save(a);

Também não consigo PERSISTIR a atualização das minhas avaliações.

Alguém tem idéia pelas minhas configurações de mapeamento onde eu estou errando?

[]´s

5 Respostas

MauricioAniche

Vc tentou dar um session.Flush(); ?

Abraços,
Mauricio

juloliveira

Mauricio,

Eu disse que meu erro era primário!!!
Valeu!!!

Mas me responde uma coisa.

Até algumas linhas de código a menos, eu não dava flush e mesmo assim ele tava funcionando no meu repositório.

Pq ?

Valeu

[]´s

MauricioAniche

Julio,

O Hibernate dá um flush automático caso você execute, por exemplo, alguma query de consulta logo em seguida! Ou seja, você estava invocando alguma ação do hibernate, que estava provocando o auto-flush!

Pra garantir o flush, você deve invocá-lo manualmente!

Abraços!

MauricioAniche

(A página travou e quando voltei, ele salvou duas vezes a mesma msg, ignorem esse reply!)

juloliveira

Entendi

Valeu!!!

[]´s

Criado 22 de dezembro de 2008
Ultima resposta 22 de dez. de 2008
Respostas 5
Participantes 2