Mapeando uma Chave Estrangeira Composta

Fala pessoal!
Estou com um grande problema que me levou dois dias de trabalho e até agora não consegui resolver…

Estou tentando mapear chaves estrangeiras compostas já tentei várias combinações e até agora nada!
Fiz um exemplo simples de banco onde devo fazer o mapeamento… Como vocês mapeariam um banco assim?

drop table field_def;
drop table field;
drop table entity;

create table entity (
	name text not null,
	constraint pk_entity primary key(name)
);
create table field (
	name text not null,
	entity_name text not null,
	constraint pk_field primary key(entity_name, name)
);

create table field_def(
	name text not null,
	entity_name text not null,
	field_name text not null,
	constraint pk_field_def primary key(entity_name, field_name, name)
);

alter table field add constraint fk_entity foreign key(entity_name) references entity(name); 

alter table field_def add constraint fk_field foreign key(entity_name, field_name) references field(entity_name, name); 

Não vou colocar o código que estou tentando mapear aqui porque estou mudando todo o tempo…
Já tentei usar <key-many-to-one, ><key-property e mapear o ><many-to-one embaixo, e outros…

O problema aqui é que não quero criar uma classe auxiliar para representar as chaves compostas… Existe alguma maneira de fazer isso?

Valeu!>

Bruno, fazer com @EmbeddedId ou @IdClass não ficaria um pouco mais fácil ?

abraços…

Não posso usar Annotations, tenho que fazer via XML como já está sendo feito no projeto.