当我尝试在我的数据库中保存多条记录时,我会先用这个函数验证是否存在这样一条记录。
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;
}
但是在第 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.
我发现有人告诉我要设置标量方法,但我没有用。
我在 Java
中使用 mysql
5 和 hibernate
。
最佳答案
在我用谷歌搜索了很多东西之后。
我找到了解决办法,就是去掉实体类
,但是我需要重命名字段cnpj
。
所以代码看起来像这样。
@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;
}
关于java - 尝试在 Hibernate 中保存多条记录时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20273768/