I have a couple Entities that have @OneToMany relationships with each other. I 
define them as so..


  | @Entity
  | public class District implements Serializable {
  |     
  |     private Long id;
  |     private String name;
  |     private Region region;
  |     private Manager manager;
  |     @DataModel
  |     private List<Store> stores;
  |             
  |     @Id @GeneratedValue
  |     public Long getId() {
  |          return id;
  |     }
  | 
  |     public void setId(Long id) {
  |         this.id = id;
  |     }
  |     
  |     @Length(max=150)
  |     public String getName() {
  |          return name;
  |     }
  | 
  |     public void setName(String name) {
  |          this.name = name;
  |     }
  | 
  |     @ManyToOne @JoinColumn(name="region_id", nullable=false)
  |     public Region getRegion() {
  |             return region;
  |     }
  | 
  |     public void setRegion(Region region) {
  |             this.region = region;
  |     }
  | 
  |     @OneToOne @JoinColumn(name="manager_id", nullable=false)
  |     public Manager getManager() {
  |             return manager;
  |     }
  | 
  |     public void setManager(Manager manager) {
  |             this.manager = manager;
  |     }
  | 
  |     @OneToMany(cascade=ALL, mappedBy="id", fetch=EAGER)
  |     public List<Store> getStores() {
  |             return stores;
  |     }
  | 
  |     public void setStores(List<Store> stores) {
  |             this.stores = stores;
  |     }   
  | 
  | }
  | 


  | @Entity
  | public class Store implements Serializable {
  |     
  |     private Long id;
  |     private String name;
  |     private String street;
  |     private String city;
  |     private String state;
  |     private String postalCode;
  |     private District district;
  |     
  |     @Id @GeneratedValue
  |     public Long getId() {
  |          return id;
  |     }
  | 
  |     public void setId(Long id) {
  |          this.id = id;
  |     }
  |     
  |     @Length(max=20)
  |     public String getName() {
  |          return name;
  |     }
  | 
  |     public void setName(String name) {
  |          this.name = name;
  |     }
  | 
  |     public String getCity() {
  |             return city;
  |     }
  | 
  |     public void setCity(String city) {
  |             this.city = city;
  |     }
  | 
  |     @Column(name="postal_code")
  |     public String getPostalCode() {
  |             return postalCode;
  |     }
  | 
  |     public void setPostalCode(String postalCode) {
  |             this.postalCode = postalCode;
  |     }
  | 
  |     public String getState() {
  |             return state;
  |     }
  | 
  |     public void setState(String state) {
  |             this.state = state;
  |     }
  | 
  |     public String getStreet() {
  |             return street;
  |     }
  | 
  |     public void setStreet(String street) {
  |             this.street = street;
  |     }
  | 
  |     @ManyToOne(optional=false, fetch=EAGER) 
  |     @JoinColumn(name="district_id", nullable=false)
  |     public District getDistrict() {
  |             return district;
  |     }
  | 
  |     public void setDistrict(District district) {
  |             this.district = district;
  |     }
  | }
  | 

The relationship definition seems to work fine because when I create a Store it 
maintains the proper District relationship in the database.


  | mysql> select * from District;
  | +----+-----------+-----------+------------+
  | | id | name      | region_id | manager_id |
  | +----+-----------+-----------+------------+
  | |  1 | district1 |         1 |          1 |
  | +----+-----------+-----------+------------+
  | 


  | mysql> select * from Store;
  | +----+--------+---------------+------+-------+-------------+-------------+
  | | id | name   | street        | city | state | postal_code | district_id |
  | +----+--------+---------------+------+-------+-------------+-------------+
  | |  1 | store1 | 123 my street | city | st    | 12345       |           1 |
  | |  2 | store2 | 456 my street | city | st    | 12345       |           1 |
  | +----+--------+---------------+------+-------+-------------+-------------+
  | 

However, when I try to load this District I am getting very odd behavior. With 
the @GeneratedValue annotations (as above) the following DataTable only shows 
Store "store1".


  |           <h:dataTable var="store" 
  |                        value="#{districtHome.instance.stores}"
  |                        rendered="#{ not empty districtHome.instance.stores 
}"
  |                        id="stores">
  |             <h:column>
  |                 <f:facet name="header">Name</f:facet>
  |                 <h:outputText value="#{store.name}"/>
  |             </h:column>
  |           </h:dataTable> 
  | 

In reality I do not want @GeneratedValue's for the Id field. But when I remove 
the @GeneratedValue annotation and input the Id's via the form I get no results 
in the <h:dataTable /> at all.

Nothing I have tried seems to be getting me anywhere. I've tried using that 
dataTable and not. I've tried using Set's and List's. I've tried it with the 
following in the DistrictHome.java:


  |     public List<Store> getStores() {
  |             return getInstance() == null || 
  |                                     getInstance().getStores() == null ? 
null : 
  |                                             new 
ArrayList<Store>(getInstance().getStores());
  |     }
  | 

And...


  |           <h:dataTable var="store" 
  |                        value="#{districtHome.stores}"
  |                        rendered="#{ not empty districtHome.stores }"
  |                        id="stores">
  |             <h:column>
  |                 <f:facet name="header">Name</f:facet>
  |                 <h:outputText value="#{store.name}"/>
  |             </h:column>
  |           </h:dataTable>             
  | 
  | 

All of which either give me no items in the stores Collection, or only one 
(when I expect two). I've gone through the examples (which is where I got the 
DistrictHome idea) and can not seem to find any differences (that solve the 
problem) between my code and the example code. I am at a complete loss at this 
point. 

Where or how can I debug this to find out what the problem is and fix it? Any 
thoughts at all on what might be causing the problem?

Thanks.

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4017893#4017893

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4017893
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to