在JPQL中更新Oracle表中的多个记录

时间:2015-11-16 10:03:47

标签: oracle jpa sql-update jpql

是否可以使用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包的对象。

0 个答案:

没有答案