2009-04-02 5 views
1

Version abrégée mon schéma:Problème d'utilisation @SecondaryTable dans Hibernate

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 

Il y a une correspondance biunivoque entre ces deux tables. En mettant de côté l'aptitude de cette conception, je veux Mapper les données dans ces deux tableaux à un objet. Dans Hibernate/JPA, ceci est supposé être effectué comme suit:

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

Et ainsi de suite. Chaque @Column comprend le nom de la table appropriée.

Quand je Deploy, je reçois cette erreur:

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

Le tableau utility_company est là sans aucun doute (une version précédente cartes seulement UtilityCompany à la table utility_company, j'ajoute la utility_settings).

Trouvé de nombreux messages de forum avec ces problèmes exacts et pas de réponses. J'ai également essayé diverses formes prétendument légales de spécifier les @SecondaryTable qui ont tous le même effet.

Toute personne utilise avec succès @SecondaryTable, et, si c'est le cas, vu cela?

+0

Je sais que cette question est très ancienne, mais ... J'ai le même problème. L'avez-vous résolu? – davioooh

Répondre

1

"Chaque @Column comprend le nom de la table appropriée." Essayez de supprimer le nom de la table explicite pour les colonnes du premier nom de table, en ne le spécifiant que pour les colonnes de la table secondaire. J'ai fait le tour pour moi.