【问题标题】:update Enum value in hibernate在休眠中更新枚举值
【发布时间】:2017-04-07 18:55:50
【问题描述】:

我写了一个 hql 查询,我想更新数据库中的枚举值,但我不知道如何更新枚举值。这是我的模型

@Entity
public class ImageInfo implements Serializable{

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
private Long id;

@Column(name = "ACTIVE")
private Integer active;

@Column(name = "NOTIFICATION_NUM")
private Integer groupNum;

@Column(name = "PUBLISHED_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date publishedTime;

@Column(name = "POSTED_TIME")
private Timestamp postedTime;

@Enumerated(EnumType.STRING)
private PublishIndicator publishIndicator;

}

您可以看到有一个名为“publishIndicator”的枚举字段。我想在 hql 查询中更新此字段。这是我的查询

session.createQuery("update ImageInfo img set img.active = 1 
and img.publishIndicator = :publish where   img.active = 0  and  
img.publishedTime <:publishedTime ").setParameter("publishedTime", 
date).setParameter("publish", PublishIndicator.PUBLISH).executeUpdate();

但我遇到了一个错误

“java.lang.IllegalArgumentException:要遍历的节点不能为空!”

我知道我在更新枚举值时做错了。我该如何解决?

【问题讨论】:

  • 您使用的是哪个版本的 Hibernate?

标签: java hibernate enums


【解决方案1】:

使用您的(完全合格的)PublishIndicator 枚举。 而不是 PublishIndicator.PUBLISH 值,所以是这样的:(假设您的 PublishIndicator 枚举在 com.image 包中),将其用作 com.image.PublishIndicator.PUBLISH

【讨论】:

  • 我试过 session.createQuery("update ImageInfo img set img.active = 1 and img.publishIndicator = :publish where img.active = 0 and img.publishedTime <:publishedtime>
  • 尝试 String.valueOf(PublishIndicator.PUBLISH) 设置相应参数的值并执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 2011-10-01
  • 1970-01-01
相关资源
最近更新 更多