5
respostas

Transformar um comando em SQL em Função Lambda do Java 8

Estou iniciando no Java 8 e gostaria de transformar o comando em SQL abaixo em uma função lambda.

SELECT * FROM CorrespondenciaCandidata c, (SELECT entidadeOrigem, MAX(m1) similaridadeMaxima FROM CorrespondenciaCandidata WHERE m1 <> 0 GROUP BY entidadeOrigem) r WHERE c.entidadeOrigem = r.entidadeOrigem AND c.m1 = r.similaridadeMaxima

Criei a Classe Correspondência com getters e setters.

5 respostas

Boa noite, Roberto! Como vai?

Eu não entendi muito bem o que vc quis dizer sobre transformar o SQL numa função lambda. Vc poderia explicar um pouco melhor, se puder, dando também um exemplo do objetivo que vc quer alcançar? Assim eu poderei entender melhor a sua questão para tentar te ajudar a chegar onde vc quer!

Segue a Classe Correspondência abaixo:

public class Correspondencia {

int codigo;
String nome;
String entidadeOrigem;
String EntidadeDestino;
double m1;
double m2;
double m3;
double medMax;
double dem;


public int getCodigo() {
    return codigo;
}
public void setCodigo(int codigo) {
    this.codigo = codigo;
}
public String getNome() {
    return nome;
}
public void setNome(String nome) {
    this.nome = nome;
}
public String getEntidadeOrigem() {
    return entidadeOrigem;
}
public void setEntidadeOrigem(String entidadeOrigem) {
    this.entidadeOrigem = entidadeOrigem;
}
public String getEntidadeDestino() {
    return EntidadeDestino;
}
public void setEntidadeDestino(String entidadeDestino) {
    EntidadeDestino = entidadeDestino;
}
public double getM1() {
    return m1;
}
public void setM1(double m1) {
    this.m1 = m1;
}
public double getM2() {
    return m2;
}
public void setM2(double m2) {
    this.m2 = m2;
}
public double getM3() {
    return m3;
}
public void setM3(double m3) {
    this.m3 = m3;
}
public double getMedMax() {
    return medMax;
}
public void setMedMax(double medMax) {
    this.medMax = medMax;
}
public double getDem() {
    return dem;
}
public void setDem(double dem) {
    this.dem = dem;
}

Olá Gabriel,

Quero transformar uma consulta feita no Banco de Dados de uma Tabela Correspondência em SQL em uma Função Lambda ou Stream da Classe Correspondência acima.

Opa, Roberto! Mas vc viu esse tipo de coisa em algum lugar e quer reproduzir? Se sim, vc poderia mostrar esse exemplo que vc está tentando reproduzir?

Estou dizendo isso pq tomando por base o que vc falou ( "quero transformar um SQL numa função lambda" ), a situação está muito abstrata!

Só quero transformar o comando de consulta em função lambda ou stream. Criei a List cor = ArrayList<>(). E inseri elementos neste ArrayList.

List cor = new ArrayList<>(); cor.add(new Correspondencia(41,"Paper_Organization","Paper", "Organization",0,0,0.14,0.04,0.23,0.08")); cor.add(new Correspondencia(11,"email_hasanemail","email", "hasanemail",0,0.19,0.21,0.19,0,0.12)); cor.add(new Correspondencia(31,"Review_Reviewer","Review","Reviewer",0,0.36,0.5,0.41,0,0.25)); cor.add(new Correspondencia(01,"PaperAbstract_Abstract","PaperAbstract","Abstract", 0,0.33,0.45,0.32,0,0.22));

Agora quero filtrar o curso com Lambda ou Stream de acordo com a query

SELECT * FROM CorrespondenciaCandidata c, (SELECT entidadeOrigem, MAX(m1) similaridadeMaxima FROM CorrespondenciaCandidata WHERE m1 <> 0 GROUP BY entidadeOrigem) r WHERE c.entidadeOrigem = r.entidadeOrigem AND c.m1 = r.similaridadeMaxima