Entidades com Embeddable - quais preciso criar no repository?

Olá,

tenho a entidade Cliente com @Embedded:

@Entity
@Table(name = "clientes")
public class Cliente {
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Long id;
	@Embedded
	private DadosPessoais dadosPessoais;
	
	public Cliente() {

	}
	
	public Cliente(String nome, String cpf) {
		this.dadosPessoais = new DadosPessoais(nome, cpf);
	}
	
	public String getNome() {
		return dadosPessoais.getNome();
	}	
	public String getCpf() {
		return dadosPessoais.getCpf();
	}
	
	
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public DadosPessoais getDadosPessoais() {
		return dadosPessoais;
	}
	
}

e a entidade DadosPessoais com @Embeddable:

@Embeddable
public class DadosPessoais implements Serializable {

	private String nome; 
	private String cpf;
	
	public DadosPessoais() {

	}

	public DadosPessoais(String nome, String cpf) {
		this.nome = nome;
		this.cpf = cpf;
	}

	public String getNome() {
		return nome;
	}

	public String getCpf() {
		return cpf;
	}

}

a minha dúvida é:
quais da entidades preciso criar no repository?
só a entidade Cliente, só a DadosPessoais, ou as duas?

valeu! obrigado.

Somente o Repository de cliente, pois dados pessoais faz parte de cliente, da forma como você modelou os dados pessoais vão para a mesma tabela de cliente, a única diferença é que está serapado em classes distintas, mas pertence única e exclusivamente à cliente.

Certo.

Aproveito para tirar outra dúvida:
tenho uma entidade com chave composta, como faço para declarar o extends do crud pois não aceita duas chaves.

Categoria2:

@Entity
@Table(name = "categorias2")
public class Categoria2 {

	@EmbeddedId
	private Categoria2Id Id;
	
	public Categoria2() { 

	}
	
	public Categoria2(String nome) {
		this.Id = new Categoria2Id(nome, 2);
	}
	
	public String getNome() {
		return this.Id.getNome();
	}
	
}

Categoria2Id:

@Embeddable
public class Categoria2Id implements Serializable {

	private String nome;
	private Integer tipo;
		
	public Categoria2Id() {

	}

	public Categoria2Id(String nome, Integer tipo) {
		this.nome = nome;
		this.tipo = tipo;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Integer getTipo() {
		return tipo;
	}

	public void setTipo(Integer tipo) {
		this.tipo = tipo;
	}
		
}

Categoria2Repository

@Repository
public interface Categoria2Repository extends CrudRepository<Categoria2,String> {

}

mais uma vez obrigado!

Vc coloca no repositorio apenas o Categoria2Id:

CrudRepository<Categoria2, Categoria2Id>

Funcionou! Beleza!

Aproveitando, tenho outra dúvida:
tenho a entidade Cliente com Embedded para DadosPessoais, como faço para fazer os setter dos DadosPessoais no Crud?

entidade Cliente:

@Entity
@Table(name = "clientes")
public class Cliente {
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Long id;
	@Embedded
	private DadosPessoais dadosPessoais;
	
	public Cliente() {
		//  JPA sempre precisa de um construtor padrão
	}
	
	public Cliente(String nome, String cpf) {
		this.dadosPessoais = new DadosPessoais(nome, cpf);
	}
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public DadosPessoais getDadosPessoais() {
		return dadosPessoais;
	}
	
}

entidade DadosPessoais:

@Embeddable
public class DadosPessoais implements Serializable {

	private String nome; 
	private String cpf;
	
	public DadosPessoais() {

	}

	public DadosPessoais(String nome, String cpf) {
		this.nome = nome;
		this.cpf = cpf;
	}

	public String getNome() {
		return nome;
	}

	public String getCpf() {
		return cpf;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}	

}

Crud:

	private void salvar(Scanner scanner) {
		System.out.println ("Informe o nome do Cliente:");
		String nome = scanner.next().toUpperCase();
        nome += scanner.nextLine().toUpperCase();
        
		System.out.println ("Informe o CPF do Cliente:");
		String cpf = scanner.next().toUpperCase();
        cpf += scanner.nextLine().toUpperCase();
		
		Cliente Cliente = new Cliente();
//		Cliente.setNome(nome);
//		Cliente.setCpf(cpf);
		ClienteRepository.save(Cliente);
		System.out.println ("Salvo!");
	}

valeu pela ajuda! abraço!

DadosPessoais dadosPessoais = new DadosPessoais();
dadosPessoais.setNome("John Doe");
dadosPessoais.setCpf("00000000191");

Cliente cliente = new Cliente();
cliente.setDadosPessoais(dadosPessoais);

Valeu Jonathan, já vou implementar!

obrigado, Abraço.