Лояльное свойство Entity всегда возвращает null
значение в TomEE, но работает в Glassfish 3, как ожидалось. Есть ли какой-нибудь слушатель, которого я не вижу, чтобы включить его в web.xml
или что-то еще? Как получить ленивое имущество?Lazy loading в TomEE не работает должным образом
Вот исходный код:
AppGroup.java:
package uz.mf.javaee6app;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class AppGroup implements Serializable {
@Id
@GeneratedValue
private Long id;
private String name;
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
AppUser.java: пакет uz.mf.javaee6app;
import java.io.Serializable;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
/**
*
* @author ravshan
*/
@Entity
public class AppUser implements Serializable {
@Id
@GeneratedValue
private Long id;
private String name;
private List<AppGroup> roles;
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public List<AppGroup> getRoles() { return roles; }
public void setRoles(List<AppGroup> roles) { this.roles = roles; }
}
я пропущу AppUserFacade лица без фасоли и UserManager CDI боб, нет ничего особенного. и последний users.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
Selected user: #{userManager.selectedUser.name}
<h:dataTable value="#{userManager.selectedUser.roles}" var="role">
<h:column>#{role.name}</h:column>
</h:dataTable>
</h:body>
</html>
UserManager.java: пакет uz.mf.javaee6app;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class UserManager implements Serializable {
private AppUser selectedUser;
public AppUser getSelectedUser() {
return selectedUser;
}
public void setSelectedUser(AppUser selectedUser) {
this.selectedUser = selectedUser;
}
}
Выбранный пользователь устанавливается другим видом.
без вашего исходного кода, это безнадежно правильно ответить на ваш вопрос. – kostja
Я думаю, что кто-то, кто использовал glassfish/eclipselink и tomee/openjpa на практике, может понять проблему даже без кода. –
Можно ли также увидеть userManager? – Rick