When i try to execute this:
MyCriteria := aObjectManager.Find<TEmployee>; aList := MyCriteria.List;
I get this error "ID not set on entity of class TGrade"
This is basic class definition
[Entity] [Table('employee')] [Description('')] [Sequence('employee_id_seq')] [Id('FId', TIdGenerator.IdentityOrSequence)] TEmployee = class(TMoonshineObject) private [Column('id', [TColumnProp.Required])] [Description('')] FId: Integer; ... end;
I found that problem is in an record which ID = 0.
Why we can't have records with ID = 0 ?
In our case it is by design this table sequencer sequencer is defined to start from 0.
CREATE SEQUENCE public.employee_id_seq INCREMENT BY 1 MINVALUE 0 MAXVALUE 2147483647 START 0 CACHE 1 NO CYCLE;
It is an old application which we rewrite now using Aurelius.
Isn't more correct to check how sequencer for table is defined and to give errors only if ID doesn't match sequencer declaration ?