Je récupère des valeurs de la base de données et j'ai un service Web qui renvoie une liste de valeurs extraites de la base de données que je l'envoie à la couche de vue frontale sur demande d'angular comme un appel de service Web

Le problème est que j'obtiens des valeurs json incorrectes. Il obtient des clés au lieu de valeurs. Quand je le vois dans la console chrome, le json est comme:

{"jobName":"NASA Scientist",
"jobPrimarySkill":null,
"jobRole":"JOB_ROLE",
"jobDesignation":"JOB_EXP",         // keyname instead of value (Incorrect values)
"jobDescription":"JOB_DESCRIPTION", // keyname instead of value (Incorrect values)
"jobSalaryRange":"JOB_POSITIONS",   // keyname instead of value (Incorrect values)
"jobExp":"JOB_SAL_RANGE",           // keyname instead of value (Incorrect values)
"jobPositions":"JOB_POSTEDBY",      // keyname instead of value (Incorrect values)
"jobPostedBy":null}

J'ai mon code back-end comme celui-ci:

@Path("/FetchJobSummary")
public class FetchJobSummaryService {

FetchJobSummaryDAO dao = new FetchJobSummaryDAO();

@GET
@Produces(MediaType.APPLICATION_JSON)
public List fetch() {

    System.out.println(dao.getJobSummaries()); 
    // prints object [com.RTH.WebServices.JobSummaries@6d90d6c5, 
        com.RTH.WebServices.JobSummaries@6d90d6c5, 
        com.RTH.WebServices.JobSummaries@6d90d6c5,....

    return dao.getJobSummaries();
    }
}

Classe DAO:

public class FetchJobSummaryDAO {

public List getJobSummaries() {

JobSummaries jobSummaries = new JobSummaries();
List<JobSummaries> jobSummaryList = new ArrayList<JobSummaries>();

try {
    Connection con = DBConnection.getConnection();

    String query = "select JOB_NAME,JOB_DESCRIPTION,JOB_ROLE,JOB_PRIMARY_SKILL,JOB_DESIGNATION,JOB_EXP,JOB_SAL_RANGE, JOB_POSTEDBY from TBL_JOBPOSTING";

    PreparedStatement pst = con.prepareStatement(query);
    ResultSet rs = pst.executeQuery();

    ResultSetMetaData rsmd = rs.getMetaData();
    int columnsNumber = rsmd.getColumnCount();
    while (rs.next()) {
        jobSummaries.setJobName(rs.getString("JOB_NAME"));
        jobSummaries.setJobDescription("JOB_DESCRIPTION");
        jobSummaries.setJobRole("JOB_ROLE");
        jobSummaries.setJobPrimarySkill(rs.getString("JOB_PRIMARY_SKILL"));
        jobSummaries.setJobDesignation("JOB_DESIGNATION");
        jobSummaries.setJobExp("JOB_EXP");
        jobSummaries.setJobSalaryRange("JOB_SAL_RANGE");
        jobSummaries.setJobPostedBy("JOB_POSTEDBY");
        jobSummaryList.add(jobSummaries);

        for (int i = 1; i <= columnsNumber; i++) {
            if (i > 1) {
               System.out.print(",  ");
            }
            String columnValue = rs.getString(i);
            System.out.print(rsmd.getColumnName(i) + " " + columnValue); //Prints correct values
        }
        }

} catch (SQLException ex) {
    Logger.getLogger(FetchJobSummaryDAO.class.getName()).log(Level.SEVERE, null, ex);
}
return jobSummaryList;
}

Je suis sûr que c'est le problème quelque part dans java que dans le frontend, mais pas pour comprendre ce qui ne va pas

2
kittu 31 déc. 2015 à 14:32

2 réponses

Comme vous prenez "JOB_PRIMARY_SKILL" de l'ensemble de résultats en utilisant rs.getString, essayez rs.getString ("JOB_DESIGNATION"), peut-être que vous manquez cela.

1
chetanl 31 déc. 2015 à 11:37

Votre erreur vient d'ici: `

while (rs.next()) {
    jobSummaries.setJobName(rs.getString("JOB_NAME"));
    jobSummaries.setJobDescription("JOB_DESCRIPTION");
    jobSummaries.setJobRole("JOB_ROLE");
    jobSummaries.setJobPrimarySkill(rs.getString("JOB_PRIMARY_SKILL"));
    jobSummaries.setJobDesignation("JOB_DESIGNATION");
    jobSummaries.setJobExp("JOB_EXP");
    jobSummaries.setJobSalaryRange("JOB_SAL_RANGE");
    jobSummaries.setJobPostedBy("JOB_POSTEDBY");
    jobSummaryList.add(jobSummaries);

Ça devrait être :

` while (rs.next()) {
    jobSummaries.setJobName(rs.getString("JOB_NAME"));
    jobSummaries.setJobDescription(rs.getString("JOB_DESCRIPTION"));
    jobSummaries.setJobRole(rs.getString("JOB_ROLE"));
    jobSummaries.setJobPrimarySkill(rs.getString("JOB_PRIMARY_SKILL"));
    jobSummaries.setJobDesignation(rs.getString("JOB_DESIGNATION"));
    jobSummaries.setJobExp(rs.getString("JOB_EXP"));
    jobSummaries.setJobSalaryRange(rs.getString("JOB_SAL_RANGE"));
    jobSummaries.setJobPostedBy(rs.getString("JOB_POSTEDBY"));
    jobSummaryList.add(jobSummaries);

"

0
Agbalaya Rasaq 31 déc. 2015 à 11:51