Java JPA:@ManyToOne没有';t自动更新引用
我有两个实体Java JPA:@ManyToOne没有';t自动更新引用,java,unit-testing,jpa,playframework,Java,Unit Testing,Jpa,Playframework,我有两个实体OrgType和OrgField: @Entity(name = "T_ORG_FIELD") public class OrgField extends Model { @MinSize(value = 2) @Column(nullable = false) public String name; @ManyToOne public OrgType orgType; ... } @Entity(name = "T_ORG_TYP
OrgType
和OrgField
:
@Entity(name = "T_ORG_FIELD")
public class OrgField extends Model {
@MinSize(value = 2)
@Column(nullable = false)
public String name;
@ManyToOne
public OrgType orgType;
...
}
@Entity(name = "T_ORG_TYPE")
public class OrgType extends Model {
@Column(nullable = false, unique = true)
public String name;
@OneToMany(mappedBy = "orgType")
public List<OrgField> orgFields = new ArrayList<OrgField>();
...
}
我创建了一个新的OrgField并更新了它对orgType的引用,并希望能自动填充orgType。orgFields
,但它没有
有什么帮助吗?请尝试填写获取属性,如下所示:
@ManyToOne(fetch=FetchType.EAGER)
@OneToMany(mappedBy="orgType", fetch = FetchType.EAGER)
FecthType.EAGER将根据您的需要获取它。如果愿意,可以为每个类定义不同的值。相反,您可以使用FetchType.LAZY,明确设置此属性而不是保留默认值以供使用是一种很好的做法
此外,您还可以将属性cascade与CascadeType.ALL一起使用以自动保存,等等,或者检查CascadeType enum以查看其他值。明确定义级联属性的值也是一种很好的做法。您可以尝试em.find(orgType.id).orgFields.size(),或者指定方法“.save”的作用。不,它也不起作用。
@ManyToOne(fetch=FetchType.EAGER)
@OneToMany(mappedBy="orgType", fetch = FetchType.EAGER)