Just to keep the update on my progress coming:

I found out that the "query did not return unique result" exception is 
thrown by the criteria API's "query.UniqueResult" executed in 
FindEntityTypes method.

I debugged it and changed it for "query.List()" and it executed the query 
yet it returned something like this:

[0] {NHibernate.Envers.DefaultTrackingModifiedEntitiesRevisionEntity} object 
{DefaultTrackingModifiedEntitiesRevisionEntityProxy}
[1] {NHibernate.Envers.DefaultTrackingModifiedEntitiesRevisionEntity} object 
{DefaultTrackingModifiedEntitiesRevisionEntityProxy}
[2] {MyNamespace.DataAccess.Audit.REVINFO} object 
{MyNamespace.DataAccess.Audit.REVINFO}


the two first rows in the result, seem to be related to the fact that 2 
entities are modified on the revision.

I'll keep looking into it.

On Wednesday, February 19, 2014 6:00:18 AM UTC-3, Roger wrote:
>
> Can’t see anything wrong on what you’ve posted. If you don’t have the time 
> to isolate your problem a bit more, I don’t know I’m afraid. Sorry.
>
>  
>
> You might want to take a look at Envers’ tests and see what differs to try 
> to find out why they work but you have problems in your environment.
>
>  
>
> If you do find the time to isolate your problem and it turns out it’s 
> really a bug in Envers, please report it to the JIRA.
>
>  
>
> Good luck!
>
> /Roger
>
>  
>
> *From:* [email protected] <javascript:> [mailto:
> [email protected] <javascript:>] *On Behalf Of *Guilherme Paschoal
> *Sent:* den 18 februari 2014 18:38
> *To:* [email protected] <javascript:>
> *Subject:* Re: [nhusers] [Envers] Query from different catalog
>
>  
>
> Roger, 
>
>  
>
> Actually, I have to say I'm sorry first, I was only testing 
> GetCurrentRevision... Other querys "work".
>
>  
>
>    - *session.Auditer().GetCurrentRevision(false)* returns Id = 0 and 
>    date = now;
>    - 
> *session.Auditer().CrossTypeRevisionChangesReader().FindEntities(3,RevisionType.Modified)
>  
>    *returns "query did not return a unique result: 3". Actually there are 
>    2 records for revision 3 in RevChanges table. How should I execute this 
>    query? I'm doing it like it is said in the docs.
>    - *session.Auditer().GetRevisionNumberForDate(new DateTime(2014, 02, 
>    17,15,55,03,503,DateTimeKind.Local)) *returns "query did not return a 
>    unique result: 2". There's only one record in Revinfo for this exact 
>    datetime.
>    - *session.Auditer().GetRevisions(typeof (ItemDeConfiguracao), 1) *returns 
>    6 records (it looks like its something with it's query's inner/left join):
>
>
>    - Name - Value
>       - [0] - 1
>       - [1] - 3 
>       - [2] - 4
>       - [3] - 1
>       - [4] - 3
>       - [5] - 4
>    
> This is my nhibernate session factory:
>
>  
>
>  public static ISessionFactory SessionFactory
>
>         {
>
>             get
>
>             {
>
>                 try
>
>                 {
>
>                     if (_sessionFactory == null)
>
>                     {
>
>                         lock (SyncRoot)
>
>                         {
>
>                             
>
>                            _sessionFactory = Fluently.Configure()
>
>                                 
>  .Database(MsSqlConfiguration.MsSql2008.Dialect<CustomMsSql2008Dialect>()
>
>                                  //.ConnectionString(c => 
> c.FromConnectionStringWithKey("DBSQL_AUDIT")).ShowSql())
>
>                                  .ConnectionString(c => 
> c.FromConnectionStringWithKey("DBSQL")).ShowSql())
>
>                                  .Mappings(m => 
> m.FluentMappings.AddFromAssemblyOf<NHibernateHelper>())
>
>                                  .ExposeConfiguration(ConfigurarEnvers)
>
>                                  //.ExposeConfiguration(c => new 
> SchemaExport(c).SetOutputFile(@"C:\Temp\scripteste.txt").Execute(true, 
> true, false))
>
>                                  .BuildSessionFactory();
>
>                           
>
>                             
>
>                         }
>
>                     }
>
>                     return _sessionFactory;
>
>                 }
>
>                 catch (FluentConfigurationException ex)
>
>                 {
>
>                    // Log.Fatal(ex);
>
>                     throw new Exception("Não foi possível conectar-se ao 
> banco de dados. Favor entrar em contato com o administrador do sistema.", 
> ex);
>
>                 }
>
>             }
>
>         }
>
> private static void ConfigurarEnvers(Configuration cfg)
>
>         {
>
>             var enversConf = new 
> NHibernate.Envers.Configuration.Fluent.FluentConfiguration();
>
>             var rev = new RevInfoListener();
>
>  
>
>             
> enversConf.Audit(Dominio.Classes.Helper.ObterSubClassesDeEntidadeBase());
>
>                         
> cfg.SetEnversProperty(ConfigurationKey.TrackEntitiesChangedInRevision, 
> true);
>
>             cfg.SetEnversProperty(ConfigurationKey.DefaultSchema, "dbo");
>
>             cfg.SetEnversProperty(ConfigurationKey.DefaultCatalog, 
> "DB_AUDIT");
>
>             cfg.IntegrateWithEnvers(enversConf);
>
>            
>
>         }
>
>
> And this is my Custom REVINFO class
>
>  
>
>   [RevisionEntity(typeof(RevInfoListener))]
>
>     public class REVINFO : DefaultTrackingModifiedEntitiesRevisionEntity 
>
>     {
>
>         public virtual string Usuario { get; set; }
>
>     }
>
>  
>
> RevInfoListener
>
> public class RevInfoListener : IRevisionListener
>
>     {
>
>         public void NewRevision(object revisionEntity)
>
>         {
>
>             var usuario = Thread.CurrentPrincipal.Identity.Name;
>
>  
>
>             ((REVINFO)revisionEntity).Usuario = usuario;
>
>         }
>
>     }
>
>  
>
> And REVINFOMap. The value returned by 
> configurationmanager.appsettings["BandoDeDadosAuditoria"] is 
> "DB_AUDIT.dbo". It's the catalog and schema name. It's the way I found to 
> force it uses the Audit database for querying, otherwise it will try to 
> query from the Session's catalog.
>
>  
>
>  public class REVINFOMap : ClassMap<REVINFO>
>
>     {
>
>         public REVINFOMap()
>
>         {
>
>             
>
>             var bdAudit = 
> ConfigurationManager.AppSettings["BancoDeDadosAuditoria"];
>
>             Schema(bdAudit);
>
>             Table("REVINFO");
>
>             
>
>             Id(x => x.Id, "REV").GeneratedBy.Identity();
>
>             Map(x => x.RevisionDate, "REVTSTMP");
>
>             Map(x => x.Usuario, "Usuario");
>
>         }
>
>     }
>
>
> Btw, The "Usuario" field is being inserted as NULL... It worked before I 
> activated the TrackEntitiesChangedInRevision setting.
>
>  
>
>  
>
> And please don't ask me to post an Isolated Test or whatever... Our code 
> is a total mess right now and for some freaking reason, an error is 
> occurring when I try to open a session in test environment. We're on a 
> total rush here. The company's president is on our asses these days. Yep, 
> the president.
>
> thanks a lot in advance!
>
>  
>
>
> On Tuesday, February 18, 2014 7:28:59 AM UTC-3, Roger wrote:
>
> AFAIK, that ”should” work. Is it one specific query that doesn’t work or 
> is it all of them?
>
>  
>
> How is your configuration object configured?
>
>  
>
> *From:* [email protected] [mailto:[email protected]] *On 
> Behalf Of *Guilherme Paschoal
> *Sent:* den 17 februari 2014 21:17
> *To:* [email protected]
> *Subject:* [nhusers] [Envers] Query from different catalog
>
>  
>
> Hello guys!
>
>  
>
> I successfully got envers to work, saving to a different catalog. 
>
>  
>
> My problem is that unfortunately, querying from that catalog, won't work. 
> It queries from the current session's catalog, not from the one I 
> configured in "cfg.SetEnversProperty(ConfigurationKey.DefaultCatalog, 
> "DB_AUDIT");".
>
>  
>
>  I've been searching around envers source but I couldn't find any tips on 
> that.
>
>  
>
> Anyone got that one working or has any tips for me?
>
>  
>
> Thanks a lot in advance!
>
>  
>
>  
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "nhusers" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/nhusers.
> For more options, visit https://groups.google.com/groups/opt_out.
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "nhusers" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected] <javascript:>
> .
> Visit this group at http://groups.google.com/group/nhusers.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to