Estou usando hibernate com Spring. Tem como pegar um connect do Hibernate?
Connection connection = null;
GeradorRelatorioUtil geradorRelatorio =
new GeradorRelatorioUtil(nome+".jasper", parametros, connection);
preciso de um connection para enviar em um método de relatorio do jasper.
achei esse link mas de onde vem o entitymanager?
link
ficou assim
` Session session = entityManager.unwrap(Session.class);
SessionImplementor sessionImplementor = (SessionImplementor) session;
Connection conn = sessionImplementor.getJdbcConnectionAccess().obtainConnection();
GeradorRelatorioUtil geradorRelatorio = new GeradorRelatorioUtil(nome+".jasper", parametros, conn); `
posso usar isso em uma util?
`@Repository
@Transactional
public class TemporaryMachineIdDao {
@PersistenceContext
private EntityManager manager;
public void gravar(TemporaryMachineId tempMachine){
manager.persist(tempMachine);
}
}`
minha duvida é pelo @Repository e o @transactional.
Minha util nao faria isso.
o @PersistenceContext para obter o manager, só funciona se for @Repository e transactional?
terei problemas futuros com isso? tem uma maneira mais clean? Me parece gambiarra fazer uma util com isso
se eu fizer isso como falado acima, da problema.
`Session session = manager.unwrap(Session.class);
SessionImplementor sessionImplementor = (SessionImplementor) session;
Connection conn = sessionImplementor.getJdbcConnectionAccess().obtainConnection();
GeradorRelatorioUtil geradorRelatorio = new GeradorRelatorioUtil(nome+".jasper", parametros, conn);
geradorRelatorio.geraPDParaOutputStream(new FileOutputStream(nome+".pdf"));`
essa é a parte onde eu uso o conn.
aqui é onde eu declaro.
`@Controller
public class RelatorioController {
@Autowired
private HttpServletRequest request;
@Autowired
private TemporaryMachineIdDao tempMachineDao;
@PersistenceContext
private EntityManager manager;`
erro
java.lang.IllegalStateException: No transactional EntityManager available at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:265) at com.sun.proxy.$Proxy29.unwrap(Unknown Source) at com.ambra.report.controlls.RelatorioController.form(RelatorioController.java:87) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)