Transcript
  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 1/26

    BlogdedicadoatemasdeprogramacinactualesusandoellenguajedeprogramacinJavaylasltimasversionesdesusAPIsyHerramientas.

    TutorialesdeProgramacionJava

    Pginaprincipal PginadeConcursos TutorialesUPAO2010 PresentacionesCapacitacin

    LUNES,2DEMARZODE2009

    Creacin de Reportes con JasperRepots y iReports Parte 2: Uso deDataSourcesPersonalizadosEnelprimerpostdelaseriedeJasperReportshabldecmocrearunabibliotecaparatrabajarconJasperReportsycmocrearunreporteenmltiplesformatos.AdemshicimosunejemplodecreacindereportesusandounaconexinJDBCdirectaanuestrabasededatos.

    Ahora veremos cmogenerar nuestros reportes sin hacer uso de una conexin.Esto puede sermuy til en los casos en los que yatengamoslosdatosenmemoriaynonecesitemosrealizarunaconexinalabasededatosoenelcasoenque,poralgunaraznajenaanosotros,nopodamosobtenerlaconexin.

    Para poder hacer esto se nos proporciona una interface: "net.sf.jasperreports.engine.JRDataSource". Esta interface tienesolodosmtodos:

    getFieldValue(JRFieldjrField)

    next()

    Explicarestosmtodosunpocomsadelante,porahoracomencemosagenerartodolonecesarioparatenernuestroreporte.

    CreamosunnuevoproyectoenNetBeans(men"File>NewProject...").Enlaventanadenuevosproyectosseleccionamoslacategora"Java"ycomo tipodeproyectoseleccionamos"JavaApplication" yhacemosclicenelbotn "Next".En lasiguienteventana introducimoselnombredenuestroproyectoydejamosseleccionadalasopciones"CreateMainClass"y"SetasMainProject".

    Para que podamos pasar datos a nuestro reporte es necesario que utilicemos un datasource. En el ejemplo anterior veamos que eldatasourcequeusbamosera labasededatosy laconexina lamisma.Enestaocasineldatasourceserunadenuestrasclases.Esta clase deber implementar la interface "JRDataSource" y contendr la lgica para pasar los datos correspondientes a nuestroreporte.

    Creamosunanuevaclasehaciendoclicderechosobreelnodo"SourcePackages"delaventana"Projects",osobreelpaquetequeyatenemoscreado,yenelmencontextualqueseabreseleccionamoslaopcin"New>JavaClass...".

    Enlaventanaqueseabreescribimoscomoennombredelanuevaclase"Participante"ypresionamoselbotn"Finish".Conestoveremosenlaventanadenuestroeditorlanuevaclase"Participante".

    Esta clase "Partcipante" representar los datos que semostrarn en el reporte, tal como en el ejemplo anterior cada uno de losregistrosdelatabla"participantes"representabaunafilaenelreportefinal,cadaobjetoparticipantequecreemosrepresentarunafilaenelnuevoreporte.

    Agreguemoslossiguientesatributosanuestraclase:

    DONACIONES

    JAVATUTORIALESENFACEBOOK

    JavaTutoriales

    A24386personaslesgustaJavaTutoriales

    PluginsocialdeFacebook

    Megusta

    JavaTutorialeshaaadidounafotonueva.

    16MegustaSehacompartido1vez

    Megusta Comentar

    13demarzo

    8 Ms Siguienteblog

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 2/26

    privateintid;privateStringnombre;privateStringusername;privateStringpassword;privateStringcomentarios;

    Ademsagregamossusgettersysussettersydosconstructores,unosinargumentosyunoquerecibacomoargumentos todaslaspropiedadesdeclaradasanteriormente.

    Si estn utilizando el NetBeans para seguir este tutorial pueden generar tanto los setters y los getters de forma automticapresionandolasteclas"Alt+Insert",conlocualseabrirunmencontextualconlasopcionesnecesariasparahaceresto:

    Alterminar,suclasedebeversemsomenosas:

    ParticiparenestesitioGoogleFriendConnect

    Miembros(195) Ms

    Yaeresmiembro?Iniciarsesin

    SEGUIDORES

    2015(1)

    2013(1)

    2012(2)

    2011(11)

    2010(10)

    2009(22)septiembre(2)

    agosto(2)

    julio(1)

    junio(3)

    mayo(2)

    abril(5)

    marzo(2)CreacindeReportesconJasperRepots

    yiReports...

    CreacindeReportesconJasperRepotsyiReports...

    febrero(2)

    enero(3)

    ARCHIVODELBLOG

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 3/26

    publicclassParticipante{privateintid;privateStringnombre;privateStringusername;privateStringpassword;privateStringcomentarios;

    publicParticipante(){}publicParticipante(intid,Stringnombre,Stringusername,Stringpassword,Stringcomentarios){this.id=id;this.nombre=nombre;this.username=username;this.password=password;this.comentarios=comentarios;}

    publicStringgetComentarios(){returncomentarios;}

    publicvoidsetComentarios(Stringcomentarios){this.comentarios=comentarios;}

    publicintgetId(){returnid;}

    publicvoidsetId(intid){this.id=id;}

    publicStringgetNombre(){returnnombre;}

    publicvoidsetNombre(Stringnombre){this.nombre=nombre;}

    publicStringgetPassword(){returnpassword;}

    publicvoidsetPassword(Stringpassword){this.password=password;}

    publicStringgetUsername(){returnusername;}

    publicvoidsetUsername(Stringusername){this.username=username;}}

    Ahora,antesdeseguirconnuestrocdigoJava,pasaremosacrearlaplantilladenuestroreporteconiReport,porloqueabrimosestaherramienta.

    En esta ocasinno haremos uso de un wizard para crear el reporte, sino que lo haremos desde cero, y aprovechar para explicar

    Alex

    Programador Java con algunos aos deexperiencia en mltiples poyectos y conmltiples APIs y herramientas deseoso decompartir experiencias con el resto deprogramadores.

    Vertodomiperfil

    DATOSPERSONALES

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 4/26

    algunosconceptosbsicossobrelosreportesconformelosvayamosnecesitando.

    Paracrearelnuevoreportevamoselmen"File>New...".Enlaventanaqueseabreseleccionamosunodelosformatos"Blank"ypresionamoselbotn"OpenthisTemplate":

    Despus introducimoselnombredel reporte,yo lo llamar"reporte2.jrxml",y laubicacinen laqueseguardar.LesrecomiendoqueenestaocasinguardenelreporteeneldirectoriorazdelproyectodeNetBeansqueacabamosdecrear.Hacemosclicenelbotn"Next" y se nosmostrar unmensaje de felicitacin por haber creado un nuevo reporte (^_^!).Cuando presionen el botn "Finish"vernunahojadivididaen7u8diferentesporcioneshorizontalesllamadasbandas.

    Cuandogeneramosnuestroreportefinalcondatos,cadaunadeestasbandassecomportadeunaformadistinta.Algunasaparecensoloalprincipiooalfinaldelreporte,otrasaparecenconcadanuevafilaqueseleagrega,otrassoloalfinaldelosdatos,etc.

    Laplantilladereportesestdivididaen10bandaspredefinidas.Unabandasiempretieneelmismoanchoquelapgina.Sinembargoelaltodealgunasdelasbandaspuedevariardurantelafasedellenadodedatos,ansiestablecimosunaltoenelmomentodeldiseo.

    Lasbandasexistentesson:

    Background

    Title

    PageHeader

    ColumnHeader

    Detail1

    ColumnFooter

    PageFooter

    LastPageFooter

    Summary

    NoData

    Explicaralgunasdeestasbandasconformelasvayamosusandoenlostutorialescorrespondientes.

    Loprimeroqueharemosesagregar textoanuestro reporte.EniReportexistendos tiposde texto: textoestticoy texto dinmico(tambin llamado expresiones). El texto esttico es aquel que no cambia, mientras que las expresiones son como etiquetas que leindicanaJasperReportsquedebereemplazarlasporalgnvaloralmomentodegenerarelreportefinal.

    Existen3tiposdeexpresiones:

    Campos(fields)representadoscon"$F{nombre_campo}".Variablesrepresentadaspor"$V{nombre_variable}".Parmetrosrepresentadospor"$P{nombre_parmetro}".

    Cadaunodeestostiposdeexpresionestieneunusoparticular:

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 5/26

    Los campos ("$F{}") le dicen al reporte dnde colocar los valores obtenidos a travs del datasource. Por ejemplo, nuestro objeto"Partcipante"tieneunatributollamado"username".Usandounaexpresindecampoindicamosenculparteoseccindelreportedebeaparecerelvalordeeseatributousando"$F{username}".Estoquedarmsclarounpocomsadelante.

    Losparmetros("$P{}")sonvaloresqueusualmentesepasanalreportedirectamentedesdeelprogramaquecreaelJasperPrintdelreporte (en nuestra aplicacin Java). Aunque tambin existen algunos parmetros internos que podemos leer pero nomodificar. Parahacerusodeestosparmetrossimplemente indicamoselnombredelparmetroenel lugarquequeremoscolocarlo.PuedenencontrarlosnombresysignificadosdelosparmetrosinternosenladocumentacindeJasperReports.

    Lasvariables("$V{}") sonobjetosusadosparaalmacenar valores como los resultadosde clculos.Al igual que con losparmetros,JasperReports tienealgunasvariables internasquepodemos leer.Puedenencontrar losnombresy significadosde las variables ladocumentacindeJasperReports.

    Cada uno de estos elementos tiene un nombre, un tipo (que debe corresponder con un tipo de objeto Java como String oInteger), yunadescripcin opcional.Ademsdebenser registradosparapoder serusadosen tiempodediseoyquepuedanserentendidosalmomentodecompilarel reporte,ypor lo tantoparaquenuestro reporte funcionecorrectamenteen tiempodeejecucin.Estoloveremosunpocomsadelante.

    Regresemosadondenosquedamos.Queremosagregaruntextoestticoanuestroreporteamododettulo.Paraestodebemosagregarun elemento llamado "Static Text". Los elementos que podemos agregar a nuestros reportes estn en una ventana llamada"Palette",queseencuentraen lapartederechadeiReport,bajo lacategora "ReportElements".Sinopuedenver laventana"Palette"presionenlasteclas"Ctrl+Shift+8":

    Deestaventanaarrastramos elelemento "StaticText"a labanda "Title". "Title" esunabandaquesoloapareceen lapartesuperiordelaprimerpgina.Porloquenossirveparacolocarelttulodelreportey/oelnombreylogodenuestraempresa.

    Una vez que hayamos colocado el texto esttico en la banda correspondiente y mientras an est seleccionado, modificamos suspropiedadesusandolaventanadepropiedadesdelelementoylabarradeformatodetexto.Tambinpodemosabrirotraventanaquenosayudeaalinearycontrolarelaltoyelanchodeloselementosyendoalmen"Window>FormattingTools".

    Ahora agregamos los encabezados de las columnas en las que semostrarn los datos que pasaremos al reporte. Agregamos estosnombresenlabanda"ColumnHeader",lacualserepetirencadapginaantesdemostrarlosdatosdelascolumnas.

    Agregaremos las columnas "Nombre", "Usuario", "Contrasea", y "Comentarios". Por lo que nuevamente arrastramos unelemento"StaticText" para cada una de las columnas. Tambin podemos ajustar el alto de esta banda para que se ajuste al denuestrotexto,yaseamovindoladirectamenteeneldiseador,odesdelaventanadepropiedades:

    Nuestroreporteyacasiestterminado,ahorasolonosquedaagregarloscamposenlosquesemostrarnlosdatosquepasaremosalreporteenunmomento.Paraqueestoscampospuedanser reemplazadosporel valor realesnecesarioqueusemos lasexpresiones

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 6/26

    (textodinmico)delasquehablanteriormente.Paraestodefiniremosun"field"paracadaunodeloscamposquequeramosmostrar(enestecasosernlosmismoscamposparalosquedefinimoslascabecerasdelascolumnas).

    Losfieldsdebendefinirseantesdepoderserusados.Estadefinicinincluyeelnombredelfieldysutipo.Losfields(ascomoelrestode lasexpresiones)sedefinenen laventana"ReportInspector"a la izquierdadeldiseadordel reporte.Ahexisteunnodollamado"Fields"queesdondeseencuentranlosfieldsquehemosdefinidoyqueporlotantopodemosusar^^.

    Hacemos clic derecho en el nodo "Fields" de la ventana "Report Inspector". Con esto se abre un men contextual.Seleccionamoslaopcin"AddField"(lanicahabilitada).

    Con esto se agregar un field llamado "field1" que por default es de tipo "java.lang.String". Cambiamos el nombre de estecampopor "nombre" usando la ventana de propiedades. Esto es importante porque donde pongamos este campo ser en donde semuestreelvalordelcamponombredenuestrosobjetosParticipantes.

    Hacemos lomismo para el resto de los campos ("username", "password", "comentarios", "id"). Hay que tener cuidado cuandoagreguemosel field"id".Si recuerdan,en ladefinicinde laclase"Participante" lapropiedad"id"estdefinidacomo"int". Sinembargo,aJasperReportssolopodemospasarleobjetosparaserusadoscomovalores,porloquesernecesariocambiareltipodelaclase("FieldClassenlaventanadepropiedades)a"java.lang.Integer"(aunqueenrealidadnomostraremosel"id"enesteejemplo).

    Ahoradebemos indicarenqupartedenuestro reportequeremosquesemuestren losvalorescorrespondientesa losatributosde losobjetos"Participante"quelepasemos.Paraesosimplementearrastramos losfieldscorrespondientesal lugarenelquequeremosque semuestren (arrastramos el field "nombre" a donde queremos que semuestre el atributo "nombre", el campo "username" endonde queremos que se muestre el atributo "username", etc.) desde el "Report Inspector". Al arrastrar los fields, iReportagregarautomticamenteunencabezadoparaestefield,soloborrenelencabezadoagregado=).

    Estosfieldsloscolocaremosenlabanda"Detail1"lacualserepitecadavezquerecibeunnuevoobjetoycolocasusvaloresenlamismafila(quedarmsclarocuandoejecutemoselejemplo).Alfinal,elreportedebequedardelasiguienteforma:

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 7/26

    Por el momento esto es todo lo que necesitamos hacer en iReport para mostrar este reporte bsico. Hacemos clic en el botn"CompileReport"paracompilarelreporteygenerarsuarchivo".jasper"respectivo.

    Podemosverunavistapreviadelreportehaciendoclicenlapestaa"Preview".Asegrensedeseleccionarel"Emptydatasource"antesdeverelpreview,delocontrariolesaparecerunerrorindicadoqueeldocumentonotienepginas.Alfinaldebenveralgocomoesto:

    Los"nulls"aparecenporquenoserecuperningnvalorquecoincidieraconelnombredeesefieldusandonuestrodatasource(queenestecasoestvaco,locualsolucionaremosacontinuacin).

    RegresamosalNetBeansyahoracrearemosunaclasequeimplementelainterface"JRDataSource"delaquehablantes.Estaclaseserlaqueusaremoscomodatasourceparanuestroreporte,ylaqueregresarlosvalorescorrespondientesacadaunodelosfieldsquecreamosantes.

    Primeroagregamosanuestroproyectolalibreria"JasperReports"quecreamosenelprimertutorialdelaseriedeJasperReports.EnestaocasinnonecesitaremosagregareljarconelDriverdelabasededatos,yaquenousaremosninguna^_^.

    Creamos una nueva clase llamada "ParticipantesDatasource" y hacemos que esta nueva clase implemente la interface"JRDataSource".PodemoshacerqueNetBeans implementedeformaautomticalosmtodosdeestainterface(proporcionandounaimplementacin vaca) presionando las teclas "Alt + Insert" y seleccionando la opcin "Implement Method" en el mencontextualqueseabre.

    Conestoseabrirunaventana llamada"GenerateImplementMethods"en lacualseleccionamos la interface "JRDataSource"paraqueseseleccionendeformaautomticatodossusmtodosyhacemosclicenelbotn"Generate".

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 8/26

    Conestotendremoslosdosmtodosimplementadosyencuyoscuerpossolohabr:

    thrownewUnsupportedOperationException("Notsupportedyet.");

    Ahora agregaremos a nuestra clase un atributo de tipo "java.util.List" llamado "listaParticipantes" que mantendrjustamenteeso:lalistadelosparticipantesdeloscualesmostraremoslosdatosenelreporte.Inicializamosestalistaaunobjetodetipo"java.util.ArrayList",deestaforma:

    privateListlistaParticipantes=newArrayList();

    Tambinagregamosuncontadorllamado"indiceParticipanteActual"detipo"int",queusaremosenseguida,yloinicializamosa"1"unpocomsadelanteexplicarporquestevalor:

    privateintindiceParticipanteActual=1;

    Hastaahoranuestraclasedebeverseas:

    publicclassParticipantesDatasourceimplementsJRDataSource{privateListlistaParticipantes=newArrayList();privateintindiceParticipanteActual=1;publicObjectgetFieldValue(JRFieldjrf)throwsJRException{thrownewUnsupportedOperationException("Notsupportedyet.");}

    publicbooleannext()throwsJRException{thrownewUnsupportedOperationException("Notsupportedyet.");}}

    AhoraimplementaremoselmtodogetFieldValue.EstemtodorecibeunargumentodetipoJRField.Esteparmetronosindicarporculdelos"fields"nosestpreguntandoelreporte.

    En la implementacin de este mtodo regresaremos los valores correspondientes a cada uno de los atributos de nuestros objetos"Participante"conformesevayanpidiendo.Porloqueelmtodoquedaas:

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 9/26

    publicObjectgetFieldValue(JRFieldjrField)throwsJRException{Objectvalor=null;

    if("nombre".equals(jrField.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getNombre();}elseif("username".equals(jrField.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getUsername();}elseif("password".equals(jrField.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getPassword();}elseif("comentarios".equals(jrField.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getComentarios();}returnvalor;}

    Donde bsicamente ocurre lo que dije anteriormente: cada vez que el reporte pregunta por el valor de un atributo del objeto"Participante" actual (al que hace referencia el contador "indiceParticipanteActual") se regresa el valor correspondiente.EstapeticinsehaceenbasealnombredelfieldquecreamosdesdeiReport.

    Ahoratalvezseestnpreguntandoenqumomentoseincrementaelcontador?,ocmosabeJasperReportcuntosparticipantesexisten?Puesbien,ambascosasocurrengraciasalaimplementacindelmtodo"next()".

    publicbooleannext()throwsJRException{return++indiceParticipanteActual

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 10/26

    publicclassParticipantesDatasourceimplementsJRDataSource{privateListlistaParticipantes=newArrayList();privateintindiceParticipanteActual=1;

    publicObjectgetFieldValue(JRFieldjrf)throwsJRException{Objectvalor=null;

    if("nombre".equals(jrf.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getNombre();}elseif("username".equals(jrf.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getUsername();}elseif("password".equals(jrf.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getPassword();}elseif("comentarios".equals(jrf.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getComentarios();}

    returnvalor;}

    publicbooleannext()throwsJRException{return++indiceParticipanteActual

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 11/26

    publicclassMain{publicstaticvoidmain(String[]args)throwsException{ParticipantesDatasourcedatasource=newParticipantesDatasource();

    for(inti=1;i

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 12/26

    ListlistaPariticipantes=newArrayList();

    for(inti=1;i

  • 14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados

    http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 13/26

    PublicadoporAlexen20:57

    Reacciones: divertido (0) interesante (2) increible (0) no me gusta (0)

    Etiquetas:ireports,jasperreports,java,reportes

    Elcualesidnticoalreportegeneradoconlaclase"ParticipantesDatasource".

    Yconestovemosquegraciasalaclase"JRBeanCollectionDataSource"noesnecesarioqueproporcionemosnuestrapropiaclasequeimplementelainterface"JRDataSource",porloquelageneracindereportesesanmssimple^^.

    Bien,estoestodoporahora.Esperoqueestepostlesseadeutilidad.

    En el siguiente tutorial hablar de cmo funcionan los parmetros y las variables enJasperReport, para lo cual haremos uso delreportequeacabamosdecrear.

    Graciasatodosynoolvidendejarsusdudas,comentarios,ysugerencias.Todoesbienvenido.

    Saludos.

    Descargalosarchivosdeestetutorialdesdeaqu:

    ReporteconDatasourcePropio

    EntradasRelacionadas:

    Parte1:ReportesconConexinaBasesdeDatosParte3:ParmetrosyVariablesParte4:ReportesenaplicacioneswebParte5:GrficasenReportesParte6:GruposParte7:Subreportes

    +8 Recomendar esto en Google

    Respuestas

    Responder

    74comentarios:

    anthe 12deabrilde2009,17:03

    Amigomepodriasayudar,coneltemaderealizarunaconeccionconhibernate,larealizoynoconsigounbuenresultadosoloun"cannotopenconnection",agregeelconectorelpathdondeestaelmapeodelabaseperoparecequealgoestamal,soyneofitaeneltemaynoencuentrounasolucionhelp!!

    Responder

    ProgramadorJava 12deabrilde2009,18:03

    HolaAnthe.

    Claroquesi,puedoayudarteconmuchogusto.Solonecesitounpocomsdeinformacinsobrequeestshaciendo.Supongoqueestashaciendo uso de un DataSource propio (ya sea implementando la interface JRDataSource o a travs de unJRBeanCollectionDataSource), y queobtienes los datos a travs deHibernate. Estoy en lo correcto?, olo estas haciendodeotraforma?

    Podrasdecirmeenqulneatedaelerror?,ohayformadequesubastucdigoaalgnsitioparapoderrevisarlo?.

    Saludos

    Responder

    Annimo 19deabrilde2009,10:40

    HolaDisculpaparaquesonlos"seters"ylos"geters"??

    SAludosMiguel.

    Responder

    AramSalinas 10deabrilde2013,10:24

    mmmmhserefierealosmtodosrelacionadosalaspropiedades,comoasignarlesunvalor"SET"orecuperarunvalor"GET"deellas.

    saludos!


Top Related