Stack Overflow en español Asked by Root93 on December 16, 2021
Tengo las siguientes tablas, la cuales ya hice su mapeo
@Entity
@Table(name ="Valores", shema="USER_PU")
@SequenceGenerator(name="Valores", sequenceName="USER_PU.SEQ.Valores", allocationSize =1)
@Data
public class Valores implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="Valores")
@Column(name="ID_VALOR", unique=true, nullable=false)
private Integer idValor;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="ID_AJUSTE", referencedColumnName = "ID_AJUSTE",
nullable=false)
private Ajustes ajustes;
@Column(name="VALOR")
private Integer valor;
@Column(name="DESCRIPCION")
private String descripcion;
@Column(name="CANAL")
private String canal;
}
@Entity
@Table(name ="Ajustes", shema="USER_PU")
@SequenceGenerator(name="Ajustes", sequenceName="USER_PU.SEQ.AJJSTES", allocationSize =1)
@Data
public class Ajuestes implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="Ajustes")
@Column(name="ID_AJUSTE", unique=true, nullable=false)
private Integer idAjuste;
@Column(name="TIPO")
private String tipo;
@Column(name="LLAVE")
private String llave;
@Column(name="VALOR")
private String valor;
@Column(name="DESCRIPCION")
private String descripcion;
@Column(name="ALCANCE")
private String alcance;
}
Lo que necesito es actualizar en la tabla Valores el campo valor, tengo un método que recibe 2 parámetros, los cuales pueden ser modificados, ya sea los 2, o sólo 1, pero cada parámetro tiene su llave, por ejemplo en las tablas que puse en el campo LLAVE están PRUEBA_COMPONENTE_A y PRUEBA_MODULO_A y tienen un valor 30 y 60 respectivamente, entonces mi método recibirá los nuevos valores para esas llaves, puede que solo quieran actualizar 1 llave o las 2 y estas deben reflejarse en el campo Valor
Tengo el siguiente método pero solo actualiza el valor de una llave , como le puedo hacer para actualizar los valores de las 2 llaves si es que se requiere, o si son más campos por ejemplo 5 y puede que se quiera actualizar los 5 o solo 3, como se haria??
@Stateless
@LocalBean
public class PruebaOperacion{
@PersistenceContext(unitName = "USER_PU")
private EntityManager entityManager;
@Interceptors(CheckpointMonitor.class)
public void operacionActualizar(Integer componente, Integer modulo){
StringBuilder updateStr = new StringBuilder("UPDATE Valores va SET ");
updateStr.append("va.valor = :componenteParam");
updateStr.append("WHERE va.ajustes.idAjuste =(SELECT ajus.idAjuste FROM Ajustes ajus WHERE ajus.tipo =:tipoParam AND ajus.llave = :llaveParam)");
entityManager.clear();
final Query query = entityManager.createQuery(updateStr.toString());
query.setParameter("componenteParam", componente);
query.setParameter("tipoParam", "NEW");
query.setParameter("llaveParam", "PRUEBA_COMPONENTE_A");
query.excecuteUpdate();
entityManager.flush();
}
}
O de que otra manera puedo hacer esa actualización de parámetros?
Aquí tienes la respuesta, hay diversas maneras de realizar esto
Answered by JLazar0 on December 16, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP