denisspitfire 29 de jul. de 2016
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 ); `
denisspitfire 29 de jul. de 2016
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
denisspitfire 29 de jul. de 2016
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)