I want to create a simple report with an equally simple subreport. The working example is for a contact list (just persons and phone numbers). Person class has a String name and a Collection of phone numbers (for the one-to-many relationship). PhoneNumber class has an int ID, a String type (work, home, cell, etc.), a String phoneNumber, and a Person (for the one-to-many relationship). The main report works fine, listing all the names in my contacts list. However, the sub-report contains no data, only column header static text if the collection is not empty. My test data has 3 contacts. One contact has 3 phone numbers, the second has one phone number, and the third has no phone numbers. It seems evident to me that the sub-report collection is working (since the column headers only print for persons with at least one phone number), but why is the phone number data not printing??? There must be some nuance about the JRBeanCollectionDataSource that is being constructed, but I can't find any working JRXML files for this scenario. Subreport definition is in the code window below and full JRXML files are attached. As an alternative to debugging my provided JRXML files, perhaps someone can provide an example of a working subreport which uses a JRDataSource (specifically a JRBeanCollectionDataSource created from a collection in the main report's data source) and no parameters? To date I have not been able to find any examples posted with this configuration. The lack of examples in this configuration seems odd to me because I think what I am trying to do is the "normal" scenario for sub-reports (i.e. displaying a main data source sub-collection data using a sub-report). FYI, I am rendering this report in PDF format only, in case that makes any difference. Thanks in advance for any assistance. Code:<field name="name" class="java.lang.String"/><field name="phoneNums" class="java.util.Collection"/>...<subreport> <reportElement x="100" y="0" width="200" height="60"/> <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{phoneNums})]]></dataSourceExpression> <subreportExpression class="java.lang.String"><![CDATA["reports/NamesAndNumbers_subreport1.jasper"]]></subreportExpression></subreport>