在已连接对象中使用@Secondary表

时间:2019-07-17 22:42:02

标签: java spring jpa

我正在研究Spring REST API,并试图映射出一个新对象以供最终用户使用。

对象是项目对象,可以具有用户先前在网站的admin部分中定义的字段列表。这些字段中的每个字段都可以具有一个特定于项目对象本身的值。我想知道是否有一种方法可以定义辅助表,并在连接的对象中使用它来实现这一目的。

例如,我有一个看起来像这样的项目对象:

@Entity
@Data
public class Project {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    @ManyToMany
    private Set<ProjectField> fields;
}

还有一个如下所示的项目字段对象:

@Entity
@Data
public class ProjectField {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    private String value;
}

我希望有某种方法可以使用@SecondaryTable批注,或者可能有一些针对我的用例的特定方法,以便能够根据其上方的项目ID填充项目字段的value属性。

例如这样的东西:

@Entity
@Data
@SecondaryTable(name = "projectFieldData", pkJoinColumns = @PrimaryKeyJoinColumn(name = "projectId"))
public class Project {
    private int id;
    private String name;
    private Set<ProjectField> fields;
}

@Entity
@Data
public class ProjectField {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    @Column(name="foo", table = "projectFieldData")
    private String value;
}

Spring或JPA是否提供任何方法在已连接的对象内使用父对象的ID,以便我可以加入另一个属性。

就我而言,有一种方法可以访问“项目字段”对象中的“项目对象ID”。

0 个答案:

没有答案