es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Llamando a Entidad por Constante Nombrada en lugar de getsomething en JAVA.

Soy un traductor de español que traduce documentos de IT. Traduzca lo siguiente al español. No traduzca el código ni la salida en markdown

Soy nuevo en JAVA. Esta es mi primera pregunta. Lo siento si es tonto o ya se hizo (consulté mucho sobre enums / constantes pero no lo entendí).

Una clase FooEntity se mapea desde SQL como se muestra. Quiero devolverlo por un “class.name” específico (como funciona enum). En lugar de usar foo.getid() y foo.getname(), quiero usar foo.ID y foo.NAME y eso devolvería las variables correspondientes.

Tabla SQL “FOO”
Columna1 Columna2
id……………….nombre
1………………..ABC
2………………..XYZ

java
@Entity
@Table(name=”FOO”, esquema…)
class FOOentity {
private Integer id;
private String name;
// Se omiten los getters y setters para mayor brevedad
}

java
List foolist = getDAOService.findall(); // devuelve la tabla FOO
for (foo : foolist)
if (foo.OPTION1) {
System.out.println(“FOO id / name: ” + foo.id + ” / ” + foo.name);
}

RESULTADO: Foo id / nombre: 1 / ABC

Me dijeron que no es necesario usar / crear enum para esto … solo debería crear una “constante” dentro / para la clase en sí. ¿Debo declarar una cadena final estática y crear un getter específico o hacer un constructor para esa cadena? No puedo entender qué hacer. ¿Necesito crear una consulta SQL específica para devolver solo un resultado único?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para acceder a las variables ID y NAME usando foo.ID y foo.NAME respectivamente, puedes definir constantes dentro de la clase FOOentity como se muestra a continuación:

    @Entity
    @Table(name="FOO", schema...)
    class FOOentity {
        private static final String COLUMN_ID = "id";
        private static final String COLUMN_NAME = "name";
    
        private Integer id;
        private String name;
    
        public Integer getID() {
            return id;
        }
    
        public String getNAME() {
            return name;
        }
    
        //Se omiten los getters y setters por brevedad
    }
    

    Las constantes COLUMN_ID y COLUMN_NAME representan los nombres de las columnas en la tabla SQL. Al definir estas constantes como variables privadas estáticas finales, se puede acceder a ellas en toda la clase FOOentity.

    Para devolver solo un resultado de la tabla SQL para un id específico, puedes crear un método personalizado en el servicio DAO que use una sentencia preparada para consultar la tabla como se muestra a continuación:

    public FOOentity findById(Integer id) {
        FOOentity foo = null;
        String query = "SELECT * FROM FOO WHERE id = ?";
        try (Connection con = getConnection();
             PreparedStatement pstmt = con.prepareStatement(query)) {
            pstmt.setInt(1, id);
            ResultSet rs = pstmt.executeQuery();
            if (rs.next()) {
                foo = new FOOentity();
                foo.setId(rs.getInt(COLUMN_ID));
                foo.setName(rs.getString(COLUMN_NAME));
            }
        } catch (SQLException e) {
            //Manejar la excepción
        }
        return foo;
    }
    

    Este método toma un parámetro id y usa una sentencia preparada para consultar la tabla SQL en busca de una fila con un valor de id coincidente. Si se encuentra una fila coincidente, se crea un nuevo objeto FOOentity y se establecen sus variables utilizando los valores del conjunto de resultados de SQL. Luego, el método devuelve el objeto FOOentity (o null si no se encuentra ninguna fila coincidente).

Comments are closed.