나는 여기 를 JPA 3 수준의 상속 (그러나 하나의 데이터 테이블 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;
}
내 문제는 내가 일 수 있다는 것입니다
이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
, 해당 오류를 수정하는 데 도움이 수 사항 : 내 Tomcat 서버를 실행할 때 오류가 무엇입니까?
아이디어는 루트 클래스는 테이블을 정의하고, 서브 클래스는 그것으로 지속된다는 것입니다 (또한 당신이 유일한 루트 클래스에서 상속을 정의). 하위 클래스에서 테이블을 정의하려는 것처럼 보이는데 작동하지 않습니다. JPA 제공자가 작성한 테이블을 보지 않으시겠습니까? 일명 – DN1
디버깅 JPA 내가 널이 아닌 NOT NULL, 버전 INT null가 아닌, PERIOD_START 날짜 null가 아닌, PERIOD_END 날짜 => '테이블 dbo.CELLAR_PER을 만들 code' ( ID의 INT 정체성 원하는의 대응은 다음 표를 생성 , CELLAR_CASE_ID int not null, 기본 키 (ID) ); 'code' – fipro28
은 스키마 이름이나 테이블 이름이 dbo입니까? – Ponni