※JPAContainer 3.2.0
※Eclipselink 2.6.0
※JDK 1.7.0_79
※Vaadin 7
※Eclipse Luna
※Tomcat7
@Theme(“mytheme”)
@SuppressWarnings(“serial”)
@Widgetset(“kr.co.skinfosec.admin.AppWidgetSet”)
public class MyPortletUI extends UI {
public static final String PERSISTENCE_UNIT = "normalization-policy";
private EntityManagerFactory emf;
private EntityManager em;
private JPAContainer<Test1> ExContainer;
private CachingMutableLocalEntityProvider<Test1> entityProvider3;
@Override
protected void init(VaadinRequest request) {
emf = Persistence.createEntityManagerFactory(MyPortletUI.PERSISTENCE_UNIT);
em = emf.createEntityManager();
entityProvider3 = new CachingMutableLocalEntityProvider<Test1>(Test1.class, em);
ExContainer = new JPAContainer<Test1> (Test1.class);
ExContainer.setEntityProvider(entityProvider3);
ExContainer.addNestedContainerProperty("[color=#FF0000]
test2.name
[/color]");
<<< Error Position
Table personTable = new Table("The Persistent People", ExContainer);
personTable.setVisibleColumns(new Object[] {"id","pwd","[color=#FF0000]
test2.name
[/color]“});
personTable.setColumnHeader(”
test2.name
", “name”);
setContent(personTable);
}
}
@Entity
@Table(name = “Test1”)
@NamedQuery(name=“Test1.findAll”, query=“SELECT t1 FROM Test1 t1”)
public class Test1 implements Serializable {
private static final long serialVersionUID = -8012776395204686026L;
public Test1() {
test2 = new ArrayList();
}
public Test1(Long idx, String id, String pwd) {
super();
this.idx = idx;
this.id = id;
this.pwd = pwd;
this.test2 = new ArrayList<Test2>();
}
@Id
@Column(name = "idx")
private Long idx;
@Column(name = "id")
private String id;
@Column(name = "pwd")
private String pwd;
@OneToMany(mappedBy = "test1", fetch=FetchType.EAGER)
private List<Test2> test2;
... more code ...
}
@Entity
@Table(name = “Test2”)
@NamedQuery(name=“Test2.findAll”, query=“SELECT t2 FROM Test2 t2”)
public class Test2 implements Serializable {
/**
*
*/
private static final long serialVersionUID = 2450191726907847559L;
public Test2() {
}
public Test2(long idx, String name, String address, Test1 test1) {
this.idx = idx;
this.name = name;
this.address = address;
this.test1 = test1;
}
@Id
@Column(name = "idx")
private Long idx;
@Column(name = "name")
private String name;
@Column(name = "address")
private String address;
@ManyToOne
@JoinColumn(name="midx", nullable=false)
private Test1 test1;
.... more code....
}
17:56:13,706 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web]
.[default-host]
.
[/ISAPAdminPortlet-0.1-SNAPSHOT].[Administration Servlet]
] (http-localhost-127.0.0.1-8080-2) Servlet.service() for servlet Administration Servlet threw exception: java.lang.IllegalArgumentException:
Invalid property name
at com.vaadin.addon.jpacontainer.PropertyList.getNestedProperty(PropertyList.java:410) [jpacontainer-3.2.0.jar:3.2.0]
at com.vaadin.addon.jpacontainer.PropertyList.addNestedProperty(PropertyList.java:250) [jpacontainer-3.2.0.jar:3.2.0]
at com.vaadin.addon.jpacontainer.JPAContainer.addNestedContainerProperty(JPAContainer.java:291) [jpacontainer-3.2.0.jar:3.2.0]
at kr.co.skinfosec.admin.MyPortletUI.init(MyPortletUI.java:37) [classes:]
at com.vaadin.ui.UI.doInit(UI.java:675) [vaadin-server-7.5.2.jar:7.5.2]
at com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:214) [vaadin-server-7.5.2.jar:7.5.2]
at com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:74) [vaadin-server-7.5.2.jar:7.5.2]
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41) [vaadin-server-7.5.2.jar:7.5.2]
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1408) [vaadin-server-7.5.2.jar:7.5.2]
at com.vaadin.server.VaadinPortlet.handleRequest(VaadinPortlet.java:472) [vaadin-server-7.5.2.jar:7.5.2]
at com.vaadin.server.VaadinPortlet.serveResource(VaadinPortlet.java:551) [vaadin-server-7.5.2.jar:7.5.2]
at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:122)
at com.liferay.portlet.ScriptDataPortletFilter.doFilter(ScriptDataPortletFilter.java:82)