Проблема с использованием @SecondaryTable в Hibernate - PullRequest
1 голос
/ 02 апреля 2009

Сокращенная версия моей схемы:

utility_company
id int not null -- PK
name varchar(255) not null

utility_settings
utility_id -- FK to utility
use_magic tinyint(1) not null default 0

Между этими двумя таблицами существует взаимно-однозначное сопоставление. Оставляя в стороне пригодность этого проекта, я хочу сопоставить данные в обеих этих таблицах с одним объектом. В Hibernate / JPA это якобы делается следующим образом:

@Entity
@Table(name = "utility_company")
@SecondaryTables({
    @SecondaryTable(
        name = "utility_settings", 
        pkJoinColumns = {
            @PrimaryKeyJoinColumn(
                name="utility_id", referencedColumnName="id")
        })
})
public class UtilityCompany extends AbstractEntity {

и т. Д.

Каждый @Column включает в себя соответствующее имя таблицы.

При развертывании я получаю эту ошибку:

Cannot find the expected secondary table: 
no utility_company available for poscore.model.UtilityCompany

Таблица utility_company определенно существует (предыдущая версия отображает только UtilityCompany на таблицу utility_company; я добавляю utility_settings).

Нашли многочисленные посты на форуме с такими точными проблемами и без ответов. Я также пробовал различные якобы легальные формы указания @SecondaryTable, все из которых имеют одинаковый эффект.

Кто-нибудь успешно использовал @SecondaryTable, и, если да, видел это?

Ответы [ 2 ]

1 голос
/ 11 марта 2011

"Каждый @Column включает в себя соответствующее имя таблицы."

Попробуйте удалить явное имя таблицы для столбцов первого имени таблицы, указав его только для столбцов вторичной таблицы. Сделал трюк для меня.

1 голос
/ 04 апреля 2009

Ваши отображения верны IMHO и отлично работают с DataNucleus AccessPlatform в качестве реализации JPA. Может быть, журнал Hibernates расскажет тебе больше?

- Энди DataNucleus

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