我正在使用游戏框架 1.2.4,并且我有一个个人资料页面,其中包含许多分段的元素(基本信息、教育、工作经验等)。
Person model
看起来像这样:
@Entity
@Table(name="Persons")
public class Person extends GenericModel implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="Id",nullable=false,unique=true)
private int id;
@Column(name="FirstName",nullable=false)
private String firstName;
@Column(name="MiddleInitial")
private String middleInitial;
@Column(name="LastName",nullable=false)
private String lastName;
@Column(name="Born",nullable=false)
@Temporal(javax.persistence.TemporalType.DATE)
private java.util.Date born;
@Column(name="Sex",nullable=false)
private String sex;
@Email
@Column(name="Email",nullable=false,unique=true)
private String email;
@Column(name="City")
private String city;
...
在控制器中我有这个:
public static void updatePerson(Person person) {
person.validateAndSave();
}
我想向模型发送更新的子集,即具有提交选项的表单的一部分只有person.firstName, person.lastName, person.dob
在视图中,我使用 JPA 对象绑定的点表示法发送参数,即(person.firstName,person.lastName 等)来自播放文档:
http://www.playframework.org/documentation/1.2/controllers#objectbinding
我遇到的问题是,这种类型的绑定看起来需要模型的所有字段,所以我在那些没有在特定视图中设置的字段上遇到 NULL 违规。
我当前的代码正在使用JPA.em().createQuery
解决它,但我遇到了不同的类型问题......
我正在寻找更好的方法?有什么想法吗?