2014-02-17 3 views
0

Я попробовал этот кодне удалось инициализировать лениво коллекцию роли в WebService отдыха

@GET 
@Produces("application/xml") 
public Customer getMsg() { 
    Customer cus = em.find(Customer.class,1); 
    return cus; 
} 

класс Customer имеет один ко многим отношений с адресом объекта. , но когда я попытался вытащить из моего клиента ajax его, дайте мне эту ошибку? как это решить. приложение работает на jboss-eap-6.2, и этот класс является фанатичным.

JBWEB000065: HTTP Status 500 - org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: org.test.Customer.addresslist, could not initialize proxy - no Session 

ответ

0

Вы можете либо изменить fetchType нетерпеливым или вам необходимо получить адрес в то время как объект еще прилагается означает, что вы должны получить его в этом методе вы имеете, прежде чем вернуться. Если вы используете JPA 2.1, вы, вероятно, можете использовать граф сущности

+0

Когда я использую метод eager, дайте мне javax.xml.bind.MarshalException - со связанным исключением. Я не хочу адрес custmers. Только я хочу получить объект клиента. – Dilis

0

Рассмотрите применение @XmlTransient в поле Address, ошибка, которую вы получаете, связана с тем, что состояние для объекта не управляется, поскольку вы находитесь за пределами транзакции так как ваше свойство LAZY, когда Marshall использует методы доступа, он пытается загрузить адрес и, поскольку вы находитесь за пределами транзакции, происходит ошибка, поэтому рассмотрите и @XmlTransient, чтобы избежать попыток маршалла использовать адрес.

public class Customer 

@XmlTransient 
public Address addresslist 

Применить, что ваш используете JAXB, если не считать поиск что-то подобное, чтобы избежать Маршалловых некоторые поля в вашей организации.

Смежные вопросы