JPA使用状況の記録
1130 ワード
一、取得記録総数の問題
例:
例外:
javax.persistence.PersistenceException: org.hibernate.MappingException: Unknown entity: java.lang.Integer
解決方法:
Query query = em.createNativeQuery(sql.toString(),Integer.class); ===>
Query query = em.createNativeQuery(sql.toString());
同時にc.idのデータ型に注意して、私のライブラリはBigIntを使って、しかも原生のSQLクエリーなので、自動的にBigIntegerにマッピングして、
非ネイティブSQLクエリーの場合は、Entityで定義したタイプにマッピングされる可能性があります.
例:
public Integer findRows(Comment entity) {
BigInteger result = BigInteger.ZERO;
StringBuilder sql = new StringBuilder();
sql.append(" SELECT COUNT(c.id) FROM ");
sql.append(" t_comment c ");
sql.append(" WHERE ");
sql.append(" c.belong_id=:belongId ");
sql.append(" AND c.belong_type=:belongType ");
logger.info("SQL:{}", sql.toString());
Query query = em.createNativeQuery(sql.toString(),Integer.class);
query.setParameter("belongId", entity.getBelongId());
query.setParameter("belongType", entity.getBelongType());
result = (BigInteger) query.getSingleResult();
return result.intValue();
}
例外:
javax.persistence.PersistenceException: org.hibernate.MappingException: Unknown entity: java.lang.Integer
解決方法:
Query query = em.createNativeQuery(sql.toString(),Integer.class); ===>
Query query = em.createNativeQuery(sql.toString());
同時にc.idのデータ型に注意して、私のライブラリはBigIntを使って、しかも原生のSQLクエリーなので、自動的にBigIntegerにマッピングして、
非ネイティブSQLクエリーの場合は、Entityで定義したタイプにマッピングされる可能性があります.