[英]Error when trying to save multiples records in Hibernate
When I try to save multiples records in my database I verify before if exist one record like that with this function. 当我尝试在数据库中保存多个记录时,请使用此功能先验证是否存在一条类似的记录。
public boolean hasNotaFiscal(Pojo pojo) {
String sql = "SELECT nota_fiscal.numero, nota_fiscal.tipo_emissao, d.cnpj, e.cnpj FROM nota_fiscal";
sql = sql.concat(" INNER JOIN destinatario ON (nota_fiscal.destinatario_id = destinatario.id)");
sql = sql.concat(" INNER JOIN emitente ON (nota_fiscal.emitente_id = emitente.id)");
sql = sql.concat(" INNER JOIN dados_empresa e ON (e.id = emitente.dados_empresa_id)");
sql = sql.concat(" INNER JOIN dados_empresa d ON (d.id = destinatario.dados_empresa_id)");
sql = sql.concat(" WHERE e.cnpj = :cnpjEmitente AND d.cnpj = :cnpjDestinatario AND numero = :numero AND tipo_emissao = :tipoEmissao");
SQLQuery query = (SQLQuery) this.createSQLQuery(sql);
query.addEntity(NotaFiscal.class);
query.setParameter("cnpjDestinatario", pojo.getDestinatario().getDadosEmpresa().getCnpj());
query.setParameter("cnpjEmitente", pojo.getEmitente().getDadosEmpresa().getCnpj());
query.setParameter("numero", pojo.getNumero());
query.setParameter("tipoEmissao", pojo.getTipoEmissao().getIndex());
return query.list().size() > 0;
}
But in the 16 record I´m getting this error... 但是在16条记录中,我遇到了这个错误...
Nov 28, 2013 5:39:39 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 0, SQLState: S0022
Nov 28, 2013 5:39:39 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Column 'id' not found.
I found someome telling to set scallar method but didn´t works with me. 我发现有人告诉我设置标量方法,但不适用于我。
I´m using mysql
5 and hibernate
in Java
. 我正在使用mysql
5并在Java
hibernate
。
after i searching a lot of things in google. 在Google搜索了很多东西之后。
I found the solution, it was to take off the entity class
but I need to rename the field cnpj
. 我找到了解决方案,那就是取消entity class
但是我需要重命名字段cnpj
。
So the code look like this. 所以代码看起来像这样。
@Override
public boolean hasNotaFiscal(Pojo pojo) {
String sql = "SELECT nota_fiscal.numero, nota_fiscal.tipo_emissao, d.cnpj as cnpjDestinatario, e.cnpj as cnpjEmitente FROM nota_fiscal";
sql = sql.concat(" INNER JOIN destinatario ON (nota_fiscal.destinatario_id = destinatario.id)");
sql = sql.concat(" INNER JOIN emitente ON (nota_fiscal.emitente_id = emitente.id)");
sql = sql.concat(" INNER JOIN dados_empresa e ON (e.id = emitente.dados_empresa_id)");
sql = sql.concat(" INNER JOIN dados_empresa d ON (d.id = destinatario.dados_empresa_id)");
sql = sql.concat(" WHERE e.cnpj = :cnpjEmitente AND d.cnpj = :cnpjDestinatario AND numero = :numero AND tipo_emissao = :tipoEmissao");
SQLQuery query = (SQLQuery) this.createSQLQuery(sql);
query.setParameter("cnpjDestinatario", pojo.getDestinatario().getDadosEmpresa().getCnpj());
query.setParameter("cnpjEmitente", pojo.getEmitente().getDadosEmpresa().getCnpj());
query.setParameter("numero", pojo.getNumero());
query.setParameter("tipoEmissao", pojo.getTipoEmissao().getIndex());
return query.list().size() > 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.