Skip to content

Commit 65f379f

Browse files
committed
Añade referencia a .getObject (Conectores - JDBC)
1 parent 8c4dbc8 commit 65f379f

File tree

3 files changed

+18
-10
lines changed

3 files changed

+18
-10
lines changed

source/04.conector/01.basico.rst

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -220,20 +220,28 @@ de objetos de Java, Por ejemplo, podríamos hacer esto:
220220
.. important:: Obsérvese que tiene que ser el programador el que traduzca el modelo
221221
relacional al modelo de objetos, tal como adelantamos en la introducción.
222222

223-
.. tip:: El valor de un campo puede ser ``NULL``. Cuando se recupera una cadena
224-
(``.getString``) esto no es un problema, porque ``String`` puede ser
225-
``null``. En cambio, ``getInt`` es incapaz de devolver ``null``, aunque el
226-
campo no tenga valor, y se verá obligado a devolver **0**. Esto no será un
227-
problema cuando **0** no sea un valor válido (como en el ejemplo, ya que a
228-
los identificadores no se les suele asignar valor **0**), pero, cuando sea un
229-
valor válido, debe existir una forma de distinguir el **0** del valor nulo:
223+
.. caution:: Los métodos ``.getInt``, ``.getLong``, etc. devuelven tipos
224+
primitivos (``int``, ``long``, etc.) por lo que cuando en la base de datos el
225+
valor del campo es ``NULL``, con incapaces de devolver ``null`` y devuelven
226+
el valor predeterminado del primitivo (p.ej. ejemplo, **0** en caso de
227+
``int`` o ``long``). Si necesitamos diferenciar el valor predeterminado del
228+
valor nulo, hay dos estrategias. Una consiste en seguir usando estos métodos
229+
y preguntar luego si el valor era realmente ``NULL``:
230230

231231
.. code-block:: java
232232
:emphasize-lines: 3
233233
234234
// Suponiendo que se permita que el campo "edad" sea nulo.
235-
Integer edad = rs.getInt("edad");
236-
if(edad == 0 && rs.wasNull()) edad = null;
235+
Integer edad = rs.getInt("edad"); // si es nulo, edad valdrá 0.
236+
if(rs.wasNull()) edad = null;
237+
238+
La segunda estrategia es usar ``.getObject`` especificando la clase en la que
239+
se quiere convertir el dato:
240+
241+
.. code-block:: java
242+
243+
Integer edad = rs.getObject("edad", Integer.class);
244+
237245
238246
.. _conn-preparedstatement:
239247

source/05.orm/files/persistence.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<properties>
1919
<!-- Propiedades generales (conexión a la base de datos) -->
2020
<property name="jakarta.persistence.jdbc.driver" value="org.sqlite.JDBC"/>
21-
<property name="jakarta.persistence.jdbc.url" value="jdbc:sqlite::file:memory:"/>
21+
<property name="jakarta.persistence.jdbc.url" value="jdbc:sqlite:file::memory:"/>
2222
<!-- Innecesarios para SQLite -->
2323
<property name="jakarta.persistence.jdbc.user" value=""/>
2424
<property name="jakarta.persistence.jdbc.password" value=""/>
9.81 KB
Binary file not shown.

0 commit comments

Comments
 (0)