I'll try and explain it a little better. At the end of section 4 of the
documentation, there is this sentence: "Having an "empty" revision entity -
that is, with no additional properties except the two mandatory ones - is
also an easy way to change the names of the table and of the properties in
the revisions table automatically generated by Envers." To me, that says
the default fields would be renamed, not just added to. This is the
default schema for the REVINFO table without a custom entity:
create table Audit.REVINFO (
REV INT IDENTITY NOT NULL,
REVTSTMP DateTime null,
primary key (REV)
)
If I use the EnversRevisionEntity I posted earlier (which inherits from
DefaultEnversEntity which already has the annotations you described), I
would expect this schema:
create table Audit.REVINFO (
Id INT IDENTITY not null,
UserFk INT null,
RevisionDate DATETIME null,
primary key (Id)
)
but instead I get:
create table Audit.REVINFO (
Id INT not null, -- why isn't this the
IDENTITY
UserFk INT null,
RevisionDate DATETIME null,
REV INT IDENTITY NOT NULL, -- why is this still here
REVTSTMP DateTime null, -- and this one
primary key (REV) -- and why isn't this Id
)
I figure either the documentation is a little misleading or I'm doing
something wrong.
-Patrick
On Friday, March 30, 2012 5:11:43 PM UTC-5, Roger wrote:
>
> I'm not really sure I understand your problem but...
>
> It's mandatory that the revision entity has a revision number and a
> revision timestamp. However, you can rename it to whatever you want though
> (both in domain model and in db schema).
>
> It seems you're using attribute configuration? In that case, something
> like...
>
> [RevisionEntity(typeof(EnversRevisionListener))]
> public class EnversRevisionEntity
> {
> [RevisionNumber]
> public virtual long RevisionId {get;set;}
> [RevisionTimestamp]
> public virtual DateTime TheTimeStamp {get;set;}
> }
>
>
> Or if you're using fluent cfg...
>
> public class EnversRevisionEntity
> {
> public virtual long RevisionId {get;set;}
> public virtual DateTime TheTimeStamp {get;set;}
> }
> fluentCfg.SetRevisionEntity<EnversRevisionEntity>(e => e.RevisionId, e =>
> e.TheTimeStamp, new EnversRevisionListener());
>
>
> /Roger
>
> ________________________________
> Från: [email protected] [[email protected]] för Patrick
> Skickat: den 30 mars 2012 17:07
> Till: [email protected]
> Ämne: Re: [nhusers] Envers with a PrimitiveType
>
> Thanks for helping me resolve that issue, but I'm having a separate
> problem now (maybe I need a new thread). I've tried replacing the
> DefaultRevisionEntity with one of my own making but in the schema
> nHibernate is generating (and expecting) both the entities fields (Id &
> RevisionDate) and the defaults (REV & REVTSTMP). Any thoughts? Relevant
> code and schema are below.
>
> [RevisionEntity(typeof(EnversRevisionListener))]
> public class EnversRevisionEntity : DefaultRevisionEntity
> {
> public EnversRevisionEntity() { }
>
> public virtual User User { get; set; }
> }
>
> create table Audit.REVINFO (
> Id INT not null,
> UserFk INT null,
> RevisionDate DATETIME null,
> REV INT IDENTITY NOT NULL,
> REVTSTMP DateTime null,
> primary key (REV)
> )
>
> Thanks,
> Patrick
>
>
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/nhusers/-/olwpYMmefLkJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en.