如何在JPA中映射两个相同类型的实体

时间:2018-07-11 13:55:04

标签: jpa spring-data-jpa many-to-many

在某些情况下,我需要在计算机硬件部件之间创建兼容性映射。

例如,要检查ComputerPart1(motherboard_yy)是否与ComputerPart1(hardrive_xx)兼容

所以我有一个名为ComputerPart的实体

@Entity
public class ComputerPart {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(nullable = false)
    private String name;

    @Column(nullable = false, unique = true)
    private String serialNumber;

    @Column(nullable = false)
    private String manufacturer;

    // getter and setters

我不确定下一步的最佳方法。

我是否使用列表创建computerParts的对象图?

Map<ComputerPart, List<ComputerPart>>

还是我要创建另一个称为兼容实体?

我可能会选择的解决方案是使用相同实体类型的列表:

@Entity
    public class ComputerPart {

        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;

        @Column(nullable = false)
        private String name;

        @Column(nullable = false, unique = true)
        private String serialNumber;

        @Column(nullable = false)
        private String manufacturer;


        @Column(nullable = false)
        private String manufacturer;

       // What @Annotation to put here?
       //is it @ManyToMany ? 
       Set<ComputerPart> compatibles;

我不确定Annotation参数。

@ManyToMany(targetEntity = ComputerPart.class, fetch = FetchType.LAZY)
    @JoinTable(name = "??", joinColumns = {
        @JoinColumn(name = "??", referencedColumnName = "??")},
            inverseJoinColumns = {
                @JoinColumn(name = "??", referencedColumnName = "??")})

0 个答案:

没有答案
相关问题