Как сопоставить несколько таблиц с полем один ко многим к одной таблице в Java? - PullRequest
0 голосов
/ 09 апреля 2019

Мне нужно решить отображение гибернации, у меня есть общая таблица, которая содержит много значений для таблиц A, B и C. (это может иметь только один многозначный номер с одной таблицей)

Тогда я решил это, указав идентификатор каждой таблицы, чтобы можно было отобразить ее. Есть ли лучший способ сделать это сопоставление? потому что у меня есть более 3 таблиц, которые используют одну и ту же таблицу

SCHEMA

1 Ответ

0 голосов
/ 09 апреля 2019

Общая таблица

Содержит одно-много отображений

@Entity
    @Table(name= "common")
    @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
                      property  = "id",
                      scope     = Long.class)
    @DynamicInsert(true)
    @DynamicUpdate(true)
    public class Common implements Serializable {

        private static final long serialVersionUID = 6953927535242022811L;

        @Id
        @Column(name= "id")
        private Long id = Long.parseLong(UUID.randomUUID().toString().substring(0, 8), 16);


        @OneToMany(cascade= CascadeType.ALL, mappedBy= "a_id", orphanRemoval= true )
        @LazyCollection(LazyCollectionOption.FALSE)
        private List<A> aList;

        @OneToMany(cascade= CascadeType.ALL, mappedBy= "b_id", orphanRemoval= true )
        @LazyCollection(LazyCollectionOption.FALSE)
        private List<B> bList;

        @OneToMany(cascade= CascadeType.ALL, mappedBy= "c_id", orphanRemoval= true )
        @LazyCollection(LazyCollectionOption.FALSE)
        private List<C> cList;

        // getter and setters
    }

Таблица A

@Entity
@Table(name= "a")
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
                  property  = "id",
                  scope     = Long.class)
@DynamicInsert(true)
@DynamicUpdate(true)
public class A implements Serializable {

    private static final long serialVersionUID = 6953927535242022811L;

    @Id
    @Column(name= "id")
    private Long id = Long.parseLong(UUID.randomUUID().toString().substring(0, 8), 16);

    @ManyToOne(optional=false)
    @JoinColumn(name= "common_id")
    private Common CommonId;  //many to one is option if you required 

}

аналогичная реализация для B и C

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...