Java 如何使用play'处理Set(LinkedHashSet);s Form.formhelper?
我有下面的场景Java 如何使用play'处理Set(LinkedHashSet);s Form.formhelper?,java,hibernate,playframework-2.0,jpa-2.0,Java,Hibernate,Playframework 2.0,Jpa 2.0,我有下面的场景 @Entity public class Parent { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id; @Column(name = "name", nullable = false) private String name; @OneToMany(fetch=FetchType.LAZY, cascade=CascadeType
@Entity
public class Parent {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column(name = "name", nullable = false)
private String name;
@OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL, mappedBy = "parent", orphanRemoval = true)
private Set<Child> children = new LinkedHashSet<Child>();
}
@Entity
public class Child {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToOne(fetch=FetchType.LAZY, optional = false)
private Parent parent;
}
我不想将LinkedHashSet更改为ArrayList(并将接口从Set更改为List),因为我在同一实体中有另一个OneToMany关系(这将导致org.hibernate.loader.MultipleBagFetchException)
我应该怎么做才能拥有BeanRapperImpl处理集?
可能吗
编辑:
我使用的JSON是:
非常感谢您的帮助。
提前谢谢您是否也可以发布您试图使用的JSON/表单数据?你真的需要LinkedHashSet吗(只是出于好奇)?我已经更新并包含了JSON结构。。。我使用LinkedHashSet是为了避免行李。。。我不想使用IndexColumn和List来避免行李。。。我更喜欢使用集合。。。我只是想知道是否有可能解析为一个集合。。。谢谢如果您只是发送JSON(假设您有一些API端点),那么您可以只使用JSON类,而不需要任何表单。试试这个:
JsonNode JsonNode=request().body().asJson();debug(jsonNode.toString());Parent Parent=Json.fromJson(jsonNode,Parent.class)
在这种情况下,您需要至少为父类
和子类
提供setter。我遇到了类似的问题。我使用.ajax()函数发布Javascript。我必须对我的JSON数据调用JSON.stringify(数据)。
Execution exception[[InvalidPropertyException: Invalid property 'children[0]' of bean class [models.Parent]: Illegal attempt to get property 'child' threw exception; nested exception is org.springframework.beans.InvalidPropertyException: Invalid property 'children[0]' of bean class [models.Parent]: Cannot get element with index 0 from Set of size 0, accessed using property path 'children[0]']]
at play.api.Application$class.handleError(Application.scala:296) ~[play_2.11-2.3.8.jar:2.3.8]
at play.api.DefaultApplication.handleError(Application.scala:402) [play_2.11-2.3.8.jar:2.3.8]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [play_2.11-2.3.8.jar:2.3.8]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [play_2.11-2.3.8.jar:2.3.8]
at scala.Option.map(Option.scala:146) [scala-library-2.11.5.jar:na]
Caused by: org.springframework.beans.InvalidPropertyException: Invalid property 'children[0]' of bean class [models.Parent]: Illegal attempt to get property 'children' threw exception; nested exception is org.springframework.beans.InvalidPropertyException: Invalid property 'children[0]' of bean class [models.Parent]: Cannot get element with index 0 from Set of size 0, accessed using property path 'children[0]'
at org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:848) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]
at org.springframework.beans.BeanWrapperImpl.getNestedBeanWrapper(BeanWrapperImpl.java:571) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]
at org.springframework.beans.BeanWrapperImpl.getBeanWrapperForPropertyPath(BeanWrapperImpl.java:548) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:912) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:82) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]
Caused by: org.springframework.beans.InvalidPropertyException: Invalid property 'children[0]' of bean class [models.Parent]: Cannot get element with index 0 from Set of size 0, accessed using property path 'children[0]'
at org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:800) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]
at org.springframework.beans.BeanWrapperImpl.getNestedBeanWrapper(BeanWrapperImpl.java:571) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]
at org.springframework.beans.BeanWrapperImpl.getBeanWrapperForPropertyPath(BeanWrapperImpl.java:548) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:912) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:82) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]
{
"name": "PARENT",
"children": [
{
"name": "test"
}
]
}