Veamos el primer caso usando el xml de mapeo de hibernate
<hibernate-mapping>
<class name="org.dracof.hibernate.Persona" table="PERSONA">
<id name="nombre" column="NOMBRE">
<generator class="assigned"/>
</id>
<property name="apellidoP" column="APELLIDOP"/>
<property name="edad" column="EDAD"/>
</class>
</hibernate-mapping>
Si hacemos operaciones de insert de Persona hibernate genera lo siguiente
Hibernate: insert into PERSONA (APELLIDOP, EDAD, NOMBRE) values (?, ?, ?)
o update
Hibernate: update PERSONA set APELLIDOP=?, EDAD=? where NOMBRE=?
Como vemos se toman en cuenta todos los campos del mapeo, para el caso del insert APELLIDOP, EDAD, NOMBRE y para el update APELLIDOP=?, EDAD=?
Si agregamos la propiedad insert="false" o update="false" en el tag property para edad
<property name="edad" column="EDAD" insert="false"/>
<property name="edad" column="EDAD" update="false"/>
O ambos
<property name="edad" column="EDAD" insert="false" update="false"/>
Vemos que el SQL generado ahora es
Para insert
Hibernate: insert into PERSONA (APELLIDOP, NOMBRE) values (?, ?)
Para update
Hibernate: update PERSONA set APELLIDOP=? where NOMBRE=?
Con esto vemos que hibernate ya no toma la propiedad edad para los insert/update.
Podemos tener el mismo resultado usando las anotaciones JPA con @Transient o la palabra reservada transient de java como sigue
@Transient
@Column (name="EDAD")
private Integer edad;
o
@Column (name="EDAD")
private transient Integer edad;
Y obtenemos el mismo resultado.
Suerte.
Lucky Club Casino Site | Find your Casino Bonus
ResponderEliminarLucky Club Casino is operated by Gambling Realms Ltd. and operated by the Gambling Realms luckyclub.live Limited, which is owned and operated by Gambling Realms Limited.