OneToMany с составным ключом - PullRequest
0 голосов
/ 29 мая 2018

У меня есть 2 классифицированных пользователя и Bottom, пользователь имеет много отношений с Bottom.У пользователя есть 2 составных ключа

userId

class TireId {
 private String uId;
 private String schoolId
}

Сущность пользователя:

@IdClass(UserId.class)
@Entity
Class User {

 @Id
 private String uId;
 @Id
 private String schoolId

    @OneToMany(mappedBy="user")
    private List<Bottom> bottoms;


}

BottomId:

class BottomId {
   private String bId;
   private String cId;
   private String schoolId;

}

Класс дна:

@IdClass(BottomId.class) 
@Entity
class Bottom {
    private String bId;
   private String cId;
   private String schoolId;
    @ManyToOne
   private  User user;
}

В приведенном выше примере hibernate создаст 2 дополнительных столбца в имени нижней таблицы user_uId и user_schoolId.

Но мне нужно отношение User oneToMany со следующим отношением

schoolId of user == schoolId of Bottom
and uId of user == cId of of Bottom

как я могузаархивировать это?

1 Ответ

0 голосов
/ 02 июня 2018

Это «производная идентификация», поэтому BottomId должен выглядеть следующим образом:

class BottomId {
    private String bId;
    private UserId user; // matches name of attribute and type of User PK
}

и Bottom должны отображаться так:

@IdClass(BottomId.class) 
@Entity
class Bottom {
    @Id
    private String bId;

    @Id
    @JoinColumns({
        @JoinColumn(name="cId", referencedColumnName="uId"),
        @JoinColumn(name="schoolId", referencedColumnName="schoolId")
    })
    @ManyToOne
    private  User user;
}

Производные идентификаторыобсуждаются (с примерами) в спецификации JPA 2.1 в разделе 2.4.1.

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