Составной первичный ключ с не примитивными атрибутами - PullRequest
3 голосов
/ 15 октября 2011

Я новичок в Java и Hibernate.У меня проблема с составным ключом.Я пытаюсь сделать что-то вроде этого:

@Entity
class A {
    @Id
    int id;
}

@Entity
class B {
    @Id
    int id;
}


@Entity
class C {
    @EmbeddedId
    C_PK c_pk;
}

@Embeddable
class C_PK {
    A a;
    B b;
}

Когда я выполняю

...
session.save(c);
...

Затем выдается исключение, что типы A и B не могут быть вставлены в базу данных.Можно ли как-то сказать hibernate не сохранять объект A, а только идентификатор A?Является ли мой подход абсолютно неправильным, и я должен просто использовать примитивные типы данных в классе C_PK?

1 Ответ

1 голос
/ 15 октября 2011

Вы должны поместить @ManyToOne (или OneToOne) со столбцами соединения в ссылках A и B в C_PK.

@Embeddable
class C_PK {
    @ManyToOne
    A a;
    @ManyToOne
    B b;
}
...