【发布时间】:2021-01-28 00:50:16
【问题描述】:
EntityManager em = entityManagerFactory.createEntityManager();
String str = String.format("UPDATE service.rules SET server_id='%2$s', alert_id='%3$s', rule_expression='%4$s', rule_frequncy='%5$s' WHERE rule_id='%1$s'",Rule.getRuleId(),Rule.getServerId(),Rule.getAlertId(),Rule.getRuleExpression(),Rule.getRuleFrequency());
Query query = em.createNativeQuery(str);
em.getTransaction().begin();
query.executeUpdate();
em.getTransaction().commit();
在这里,如果规则对象中的一个数据除了 rule_id 之外为空(如果有必要),则此查询将失败,因此我可以为 Rule 对象中的每个值格式化字符串并将它们连接起来,排除在 Rule 对象中具有空值但有没有更好的方法来做到这一点?因为如果有 100 列,那么这将不是理想的过程。 JPA 也有任何可以满足我要求的东西。
【问题讨论】:
标签: java sql spring-boot jpa spring-data-jpa