JSF Datatable не может получить значение объекта отношения OnetoMany? - PullRequest
1 голос
/ 02 мая 2011

Я новичок в JSF, и у меня проблемы с отображением данных с использованием данных.Вот мой сценарий:

Я хочу отобразить контракт (ы), назначенные Клиенту

Дата доступа к странице JSF: customerdetail.jsp

 <h:dataTable id="dt_contract_list" value="#{customerBean.customer.contracts}" var="item">
    <h:column>
        <f:facet name="header">
            <h:outputText value="Contract Identifier"/>
        </f:facet> 
        <h:outputText style="" value="#{item.contractIdentifier}"></h:outputText>
    </h:column>
 </h:dataTable>

Сущность: Клиент.java

@Entity
@NamedQueries({
    @NamedQuery(name="getCustomerByName", query="SELECT customer FROM Customer customer WHERE customer.name = :name"),
    @NamedQuery(name="getAllCustomer", query="SELECT customer FROM Customer customer")
})
public class Customer {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;
    private String name;

    @OneToMany(targetEntity = Contract.class, 
               mappedBy = "customer", 
               cascade = CascadeType.ALL,
               fetch=FetchType.EAGER)
    private List<Contract> contracts = new ArrayList<Contract>();

    public Customer() {
        super();
    }

    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Contract> getContracts() {
        return this.contracts;
    }

    @Override
    public boolean equals(Object object) {
        if (this.getClass().isInstance(object)) {
            return this.getName().equals(((Customer) object).getName());
        } else {
            return false;
        }
    }   
}

BackingBean: CustomerBean.java

public class CustomerBean implements Serializable {

    @EJB
    private CustomerControllerLocal customerController;

    private Customer customer;

    public CustomerBean()  {
        customer = new Customer();
    }

    public String createCustomer()  {
        // create customer
    }

    public String updateCustomer()  {
        // update customer
    }

    public String deleteCustomer()  {
        // delete custoer
    }

    public String getCustomerByName()  {
        try {
            customerController.getCustomerByName(customer.getName());
        } catch (NotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return "customer_got";
    }

    public String assignContractsToCustomer()  {
        // assign contract to customer
    }

    public Customer getCustomer() {
        return customer;
    }

    public void setCustomer(Customer customer) {
        this.customer = customer;
    }
}

Нет ошибок, и весь уровень бизнес-логики, уровень данных были протестированы и работают нормально, но результат равен нулю (и этоне должен!) и никаких признаков каких-либо исключений.Может кто-нибудь помочь мне понять, что с этим не так?Т ___ Т

1 Ответ

0 голосов
/ 02 мая 2011

Ваш код лица выглядит нормально.

В вашем классе сущностей есть одна вещь, которая выглядит подозрительно. Вот эта строка:

private List<Contract> contracts = new ArrayList<Contract>();

В сущности classe для моих собственных проектов (классов, сгенерированных netbeans) списки отношений никогда не инициализируются. Я не эксперт в JPA, но вы можете попробовать это без инициализации.

...