2017-10-26 2 views
0

とテーブル が不足して、私のエンティティはスキーマ検証:ここで私はJPAと3レベルの継承(しかし、一つだけのDataTable CELLAR_PER)を持っている必要がありJPAマルチレベルの継承

@MappedSuperclass 
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) 
public class PersistEntity implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Id 
    @Column(name = "ID", nullable = false) 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Integer id; 

    ... 
} 

セカンドレベル

@MappedSuperclass 
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) 
public class PersistEntityPer extends PersistEntity { 
    private static final long serialVersionUID = 1L; 

    @Temporal(TemporalType.DATE) 
    @Column(
     name = "PERIOD_START", 
     nullable = false) 
    private Date periodStart; 

    @Temporal(TemporalType.DATE) 
    @Column(
     name = "PERIOD_END", 
     nullable = false) 
    private Date periodEnd; 
} 
です

そして、最後のレベル

@Entity 
@Table(name = "dbo.CELLAR_PER") 
public class CellarPer extends PersistEntityPer { 

    private static final long serialVersionUID = 1L; 

    @ManyToOne 
    @JoinColumn(
     name = "CELLAR_CASE_ID", 
     nullable = false) 
    private CellarCase cellarCase; 
} 

私の問題は、私は目を取得するということです私のTomcatサーバーを実行中にエラーが発生しました:

Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing table [dbo.CELLAR_PER] 
    at org.hibernate.tool.schema.internal.AbstractSchemaValidator.validateTable(AbstractSchemaValidator.java:121) 
    at org.hibernate.tool.schema.internal.GroupedSchemaValidatorImpl.validateTables(GroupedSchemaValidatorImpl.java:42) 
    at org.hibernate.tool.schema.internal.AbstractSchemaValidator.performValidation(AbstractSchemaValidator.java:89) 
    at org.hibernate.tool.schema.internal.AbstractSchemaValidator.doValidation(AbstractSchemaValidator.java:68) 
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:191) 
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) 
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:309) 
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:452) 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:889) 
    ... 48 common frames omitted 

どうしたらよいですか?

+0

アイデアは、ルートクラスは、テーブルを定義し、サブクラスがそれに永続化されるということである(また、あなたが唯一のルートクラスで継承を定義します)。サブクラスでテーブルを定義したいと思うようですが、これはうまくいきません。あなたのJPAプロバイダが作成したテーブルは何ですか?別名 – DN1

+0

をデバッグJPAは、私がnullではないではないヌル、 VERSION int型nullではない、 PERIOD_START日付nullではない、 PERIOD_END日=> 'テーブルdbo.CELLAR_PERを作成code'( IDのint型のアイデンティティ欲しいものの対応は、次の表を作成しました、 CELLAR_CASE_ID int not null、 主キー(ID) ); 'code' – fipro28

+0

は、dboはスキーマ名またはテーブル名ですか? – Ponni

答えて

0

あなたの権利があります。ここでは解決策がある:

私の実体宣言では、私はこれでした:

@Table(name = "dbo.CELLAR_PER") 

をそして私はちょうど宣言からdbo.を削除しました。解決策は以下のとおりです。SINGLE_TABLEと

@Table(name = "CELLAR_PER") 
-1

右のように、「dbo」のために時間が失われました。それだけでした...あなたの助けをありがとう

+1

あなた自身の質問に答えるのは問題ありませんが、回答を提供した場合は、実際の回答を提供します(問題の内容と解決方法を説明しています)。あなたが投稿したものはコメントです。 –

関連する問題