是否可以使用CASE ... WHEN ... THEN表达式和参数更新一个JPQL查询中的多行?它是Oracle数据库的表。
param
我收到了这个错误: java.sql.SQLSyntaxErrorException:ORA-00932:不一致的数据类型:预期的CHAR有NUMBER
生成的SQL查询是:(我之前已经简化了查询,因为有9个id可以区分)
Integer param1 = .....;
Integer param2 = .....;
Integer param3 = .....;
Query query = session.createQuery("update NumberEntity i set i.value = case "
+ "when (i.id=1) then ?1"
+ "when (i.id=2) then ?2"
+ "when (i.id=3) then ?3 else 0 end");
query.setParameter(1, param1);
query.setParameter(2, param2);
query.setParameter(3, param3);
@Entity
@Table(name = "Number")
public class NumberEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idNumber", nullable = false)
private Integer id;
@Basic(optional = false)
@Column(name = "value")
private Integer value;
.......
}
我没有char列。但是"价值" column是十进制类型,而它是我的Entity中的Integer。我虽然稍后会纠正这个问题。我不明白为什么错误会处理CHAR。
session是一个使用javax.persistence包的对象。