Important Notice - Forums is archived
To simplify things and help our users to be more productive, we have archived the current forum and focus our efforts on helping developers on Stack Overflow. You can post new questions on Stack Overflow or join our Discord channel.

Vaadin lets you build secure, UX-first PWAs entirely in Java.
Free ebook & tutorial.
do not find field name(Invalid property name)
※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("test2.name"); <<< Error Position
Table personTable = new Table("The Persistent People", ExContainer);
personTable.setVisibleColumns(new Object[] {"id","pwd","test2.name"});
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<Test2>();
}
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)
At the first glance there seems to be classnames included in your propertynames. Remove "test2." from your propertynames.
Here is good tutorial to how to use JPAcontainer
http://vaadin.com/download/jpacontainer-tutorial/