【问题标题】:Hibernate Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1Hibernate 批量更新从更新 [0] 返回了意外的行数;实际行数:0;预期:1
【发布时间】:2013-09-26 19:13:14
【问题描述】:

我在使用 Hibernate 时遇到问题。

我遇到了这个异常

Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

我正在尝试显示数据库中的日期,我的专栏之一是一个字符,在我的课堂上有一个 Enum

public enum Status {

    CADASTRADA('C', "Cadastrada"),
    APROVADA('A', "Aprovada"),
    LIBERADA('L', "Liberada"),
    BLOQUEADA('B', "Bloqueada");

    public char index;
    public String descricao;

    private Status(char index, String descricao) {
        this.index = index;
        this.descricao = descricao;
    }

    public static Status valueOf(char index) {
        for (Status status : Status.values()) {
            if (status.equals(index)) {
                return status;
            }
        }
        return null;
    }

    public String getDescricao() {
        return this.descricao;
    }

    public char getIndex() {
        return this.index;
    }

}

`

我创建一个TypeClass 来转换

`public class FilialStatusType extends TypeHibernate { public static final String TYPE = "filialStatusType";

@Override
public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor sessionImpl, Object obj)
        throws HibernateException, SQLException {

    String index = rs.getString(names[0]);

    return StringUtil.isStringNullOrEmpty(index) ? null : Filial.Status.valueOf(index.charAt(0));
}

@Override
public void nullSafeSet(PreparedStatement ps, Object value, int index, SessionImplementor session)
        throws HibernateException, SQLException {
    Filial.Status status = (Filial.Status) value;

    if (NullUtil.isNull(status)) {
        ps.setNull(index, CharacterType.INSTANCE.sqlType());
    } else {
        ps.setString(index, String.valueOf(status.index));
    }
}

@Override
public Class<Filial.Status> returnedClass() {
    return Filial.Status.class;
}

} `

那么有人可以帮帮我吗?

【问题讨论】:

  • 什么行或方法抛出这个异常?这是所有的代码吗?你的数据库里有什么东西吗?它似乎在您的数据库中找不到任何行。
  • 是的,我的数据库中有日期,Type Class中抛出异常
  • 用什么方法?哪一行?
  • nullSafeGet return StringUtil.isStringNullOrEmpty(index) ? null : Filial.Status.valueOf(index.charAt(0)); 我只想查看我的数据库,但它显示 sql update
  • 这可能与您的比较方式有关:if (status.equals(index))

标签: java hibernate jpa


【解决方案1】:

这可能与您的比较方式有关:

if (status.equals(index))

我认为您无法像这样比较 enum 和 char。

【讨论】:

    【解决方案2】:

    有很多原因可能导致这种情况:

    • 触发器/规则/plsql 可能会拒绝或拒绝您的更改
    • 你没有权利
    • 另一个用户已经做了这个操作
    • 一些数据库支持只读连接。

    还有很多。

    如果这种情况经常发生,您应该使用@version 字段。包裹实体。

    【讨论】:

      猜你喜欢
      • 2021-04-24
      • 2020-09-27
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      相关资源
      最近更新 更多