Using new AbstractEntity to define Id property does not work

Hi,

When mapping Id in an [AbstractEntity] it does not work, and I get the folowing exception:

ECannotFindPropertyKey with message 'Property "TMyBaseClass.FId" could not be defined as key in entity type'

My implementation is similar to the one found in the documentation:

But with only 1 field (FId) in abastract class.

If I change TMyBaseClass mapping from [AbstractEntity] to [Entity] it works.

Any thougts?

Can you please provide the full mapping and/or the project so we can reproduce it here?

Hi @wlandgraf, thanks for your help. 2 units:

Abstract entity:

unit MyAbstractEntity;

uses
  System.SysUtils,
  Aurelius.Mapping.Attributes;

type
  TObjectId = Int64;

  [AbstractEntity]
  [Automapping]
  [Id('FId', TIdGenerator.IdentityOrSequence)]
  TBusinessObject = class
  strict private
    FId: TObjectId;
  public
    property Id: TObjectId read FId write FId;
  end;

implementation
end.

Concrete entity:

unit MyConcreteEntity;

interface

uses
  Aurelius.Types.Nullable,
  Aurelius.Types.Blob,
  Aurelius.Types.Proxy,
  Aurelius.Mapping.Attributes,
  MyAbstractEntity;

type
  [Enumeration(TEnumMappingType.emInteger)]
  TSituacaoUsuario = (Regular, Bloqueado);

  [Entity]
  [Table('USUARIOS')]
  [Sequence('SEQ_USUARIOS')]
  TUsuario = class(TBusinessObject)
  private
    [Column('NOME', [], 65)]
    FNome: string;
    [Column('EMAIL', [], 260)]
    FEmail: Nullable<string>;
    [Column('SITUACAO', [])]
    FSituacao: TSituacaoUsuario;
  public
    property Nome: string read FNome write FNome;
    property Email: Nullable<string> read FEmail write FEmail;
    property Situacao: TSituacaoUsuario read FSituacao write FSituacao;
  end;

implementation

initialization
  RegisterEntity(TUsuario);

end.

Regards,

Hi @wlandgraf,

I'm attaching a test project to reproduce the problem. The project was created with Delphi 10.4.2 Pro

You'll need Firebird 3 to test it.

Run and click 'Start' button.

TestProject.zip (92.9 KB)

1 Like

Thank you very much. We could reproduce it. It was not clear that the problem was in XData, not Aurelius. The fix will be included in next release.

1 Like

Now It makes sense. I could not reproduce it making changes to (pure) Aurelius demos.

Thank you very much!

1 Like

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.