【发布时间】:2013-12-03 06:52:10
【问题描述】:
实体的惰性属性在 TomEE 中始终返回 null 值,但在 Glassfish 3 中按预期工作。有没有我想在web.xml 或其他内容中包含的听众?如何获取惰性属性?
这里是源代码:
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 无状态 bean 和 UserManager CDI bean,没有什么特别的。和最后一个 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;
}
}
选定的用户正在被另一个视图设置。
【问题讨论】:
-
没有你的源码,无法正确回答你的问题
-
我认为在实践中使用 glassfish/eclipselink 和 tomee/openjpa 的人即使没有代码也能理解问题。
-
我们还能看到 userManager 吗?
标签: jpa-2.0 java-ee-6 glassfish-3 openjpa apache-tomee