Foros del Web » Programación para mayores de 30 ;) » Java »

Orden de inserción con Hibernate y JPA

Estas en el tema de Orden de inserción con Hibernate y JPA en el foro de Java en Foros del Web. Buenos días a todos, He tenido un problema al realizar un insert con hiberntae y JPA en una base de datos Postgre. Por lo visto, ...
  #1 (permalink)  
Antiguo 14/09/2015, 01:40
 
Fecha de Ingreso: mayo-2005
Mensajes: 9
Antigüedad: 19 años, 6 meses
Puntos: 0
Orden de inserción con Hibernate y JPA

Buenos días a todos,

He tenido un problema al realizar un insert con hiberntae y JPA en una base de datos Postgre. Por lo visto, las reglas y las particiones no le gustan a hibernate. Por suerte he conseguido solucionarlo poniendo, en la declaración de la clase con JPA, el insert a pelo.

Os la copio aquí por si alguien tiene el mismo problema o un problema parecido:

Código:
@Entity
@Table(name = "T_LIQ_M_EXT_AGGREGATION")
@SQLInsert(sql = "INSERT INTO T_LIQ_M_EXT_AGGREGATION(cd_dh,cd_distrib,cd_measure_point_type,"
		+ "cd_n_tension,cd_prov_sub,cd_tariff,cd_trader,dt_end_effective,dt_start_effective,"
		+ "nm_month,nm_year,id_aggregation) "
		+ "VALUES "
		+ "(?,?,?,?,?,?,?,CAST (? AS TIMESTAMP),CAST (? AS TIMESTAMP),CAST (? AS NUMERIC),CAST (? AS NUMERIC),CAST (? AS NUMERIC))",
		check=ResultCheckStyle.NONE)
public class AggregationExt implements Serializable{
	
	private Long idAggregation;
	
	private Long nm_year;
	
	private Long nm_month;
	
	private String codProvSub;
	
	private Timestamp fStartEffective;
	
	private Timestamp fEndEffective;

	@Id
	@Column(name = "id_aggregation")
	@SequenceGenerator(name = "AgregationExtSequence", sequenceName = "seq_ext_aggregation", allocationSize=1)
	@GeneratedValue(generator = "AgregationExtSequence", strategy=GenerationType.SEQUENCE)
	public Long getIdAggregation() {
		return idAggregation;
	}

	@Column(name = "nm_year")
	public Long getNm_year() {
		return nm_year;
	}
Durante un tiempo, estuve atascado por que el código anterior tampoco me funcionaba, hasta que me dí cuenta que el orden en el que hibernate introducía los parámetros que se iban a insertar, no era el correcto, por lo que no hacía bien los casting. Hibernate coge los campos por orden alfabético, menos la pk que la pone la última.

Y después de este tostón, ahí va mi pregunta. ¿Alguien sabe si existe alguna forma de forzar en hibernate el orden de inserción de los parámetros? Principalmente por que como el día de mañana, a hibernate le dé por cambiar el orden, nos podemos morir para encontrar el error.

Muchas gracias por adelantado y espero haberme explicado bien.
  #2 (permalink)  
Antiguo 14/09/2015, 02:19
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: Orden de inserción con Hibernate y JPA

Wow, no es capaz de ponerlos en orden tomando el valor del nombre de la @Column?

Por lo que veo aqui efectivamente no se puede predecir el orden...
https://raymondhlee.wordpress.com/20...th-custom-sql/

A ver si hay alguien que pueda darte una solucion. Yo la verdad es que estoy como tu.


Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: clase, hibernate, inserción, jpa, orden, sql, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:32.