0

我遇到了休眠问题。

我有这个例外

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;
}

} `

那么有人可以帮助我吗?

4

2 回答 2

2

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

if (status.equals(index))

我认为你不能像这样比较 aenum和 a char

于 2013-09-26T20:39:51.110 回答
0

有几件事可能会导致这种情况:

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

很多很多。

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

于 2013-09-26T19:47:37.127 回答