Dúvida Criteria

Boa tarde pessoal.

Eu consigo fazer um critéria com uma entidade que não esteja mapeada em outra entidade? Ou tenho que usar query nativa para fazer essa consulta?

Tenho uma entidade usuario e outra produto mas não tenho relacionamento de produto com usuário mas tenho que trazer o nome do usuario na query de produto sendo que no usuario existe so uma variável idProduto sem relacionamento.

Ex:

@Entity
@Table(name = "DCF_USUARIOS")
public class UsuarioTO{

   
    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long                                       id;

 @Column(name = "nome_usuario")
    private String nomeUsuario;

  
    @Column(name = "id_produto")
    private Long idProduto;
}

@Entity
@Table(name = "DCF_PRODUTO")
public class ProdutoTO{

   
    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long                                       id;
 
}

Então quero fazer uma criteria em produto, mas preciso trazer o nome do usuário que tenha o id do produto gravado na entidade sendo que não estão relacionados um com outro.

Teria como fazer com criterio ou tenho que fazer uma nativeQuery com Join entre as duas tabelas?

Não consegui perceber a sua dúvida. Pode tentar formular com um exemplo?

Por que você voce nao quer fazer o mapeamento do relacionamento? Claro que seria muito mais prático fazer em SQL diretamente e não ficar toda hora se preocupando com mapeamentos, isso é bem burocrático mesmo.

Eu quero fazer, mas tem um arquiteto aqui que disse que no caso do nosso sistema não podera fazer esse relacionamento, lembrando que as classes são de exemplo.

o que esta gerando essa duvida e uma implementação do mitreId com o banco do sistema que estamos desenvolvendo.

Modifiquei a pergunta se puder ajudar ficarei feliz… valeu :slight_smile:

O arquiteto inventa um problema e não dá a solucão? Se ele não dá a solução faz diretamente via SQL.

2 curtidas

Mas quero mostrar pra ele que esse problema que ele causou não dá pra resolver com critério. Valeu pela resposta.

Pode tentar a solução abaixo. Mas SQL diretamente é bem mais legível.