【发布时间】:2020-01-19 17:09:14
【问题描述】:
是否可以从控制台获取该值: 并将它们保存到 java 列表/地图中?
我以这种方式打印了日志:
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
我的查询:
@Transactional
public String executeSQL(String[] split){
SessionFactory hibernateFactory = someService.getHibernateFactory();
String message = null;
int rows = 0;
EntityManager entityManager = hibernateFactory.createEntityManager();
EntityTransaction utx = entityManager.getTransaction();
for (int i = 0; i < split.length; i++) {
String query = split[i];
try {
utx.begin();
Query query1 = entityManager.createNativeQuery(query);
rows = query1.executeUpdate();
utx.commit();
try{
resultList = query1.getResultList();
resultList.stream().map(Arrays::toString).forEach(System.out::println);
}
catch(Exception e){
}
message = "Success \n{ ["+rows+"] <--- affected rows}";
}catch (PersistenceException e){
utx.rollback();
message = (((SQLGrammarException)e.getCause()).getSQLException()).getMessage();
}
}
entityManager.close();
return message;
}
如您所见,我知道如何将值保存到列表中,但我无法提取列...因为没有关于列名称的信息。在日志中,列有名称,列也有类型,这些信息对我很有用。
【问题讨论】:
-
你能分享你剩下的代码吗?例如,缺少实际的本机查询。也看看这里:baeldung.com/hibernate-query-to-custom-class
-
我编辑了代码。你是什么意思我的查询丢失了?
-
我认为你没有理解 Hibernate 的目的。 Hibernate 是一个 ORM,这意味着它将 Java POJO 映射到数据库表中,反之亦然。您所指的信息是您的实体对象。
标签: java hibernate hibernate-mapping