Eu li com mais atenção a seção abaixo.
https://jakarta.ee/specifications/persistence/3.1/jakarta-persistence-spec-3.1.html#a132
E entendi melhor o que ela diz.
Podemos usar classes anotadas com @Embeddable como composite primary key. Classes que são usadas desta forma são chamadas de primary key classes.
As Primary key classes tem requerimentos adicionais e alguns deles são:
- Devem ser serializaveis
- Devem definir
equals e hashCode
Então, este trecho que vc postou está certinho.
Com base nisso, voltando para a questão 1, dos 4 itens apresentados, acredito que o único que deve ser satisfeito é o quarto (implementar Serializable).
Só tenho mais uma observação: O trecho que vc postou me deu a entender que @Embeddable é sinônimo de “chave composta”. Só por este trecho não dá para ter certeza de que essa foi a intenção do autor, mas, de qualquer forma, é importante destacar que nem toda classe anotada com @Embeddable é usada como chave composta.
Me desculpe pela minha resposta anterior, pois eu acho que ela pode ter te confundido mais. Quando eu a escrevi, não tinha percebido que as @Embeddable usadas como chave composta possuiam requisitos adicionais.