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("[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)

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/

Thanks for your help