최대 절전 모드 4를 사용하기 위해 웹 응용 프로그램을 업그레이드했습니다. 그 후 몇 가지 문제점이있어서 도움이 필요합니다. 그런 다음최대 절전 모드 4, @ 상속 및 @GeneratedValue 오해로의 마이그레이션
@MappedSuperclass
public class BaseDomainObject implements Serializable {
@Id
@GeneratedValue
@Column
protected Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
를,이 같은 엔티티를 많이 가지고 :
내가, 내 도메인 개체에 대한 하나 개의 기본 클래스가은 다음과 같습니다
@Entity
@Table(name="[user]")
public class User extends BaseDomainObject {
@Column(name="first_name")
private String firstName;
@Column(name="last_name")
private String lastName;
....
}
그리고 난 일부 상속 사이가 엔티티 : 내가 HQL 질의를 할 때
@Entity
@Table(name="record_data")
@Polymorphism(type=PolymorphismType.EXPLICIT)
public class RecordData extends BaseDomainObject {
....
}
@Entity
@Table(name="auto_data")
@Polymorphism(type=PolymorphismType.EXPLICIT)
public class AutoData extends RecordData {
}
내가이 예외가
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'DTYPE'.
16,최대 절전 소스 코드에서 나는 엔티티가있는 경우는 DiscriminatorColumn를 연결하여 각 쿼리에 있도록 부모가 기본적으로 SINGLE_TABLE 상속에 넣어 최대 절전 것을보고 있지만, 각 클래스가 다른 테이블에 매핑되는 때문에, 더 판별 자 컬럼이 없습니다.
이 문제를 해결하기 위해 난 내 기관에이 주석 넣어 :@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
을하지만 그 후 나는 또 다른 exeption
Caused by: org.hibernate.MappingException: Cannot use identity column key generation with <union-subclass> mapping for: bla.bla.RecordData
나는 이것에 대한 웹에서 해결책을 찾았을 얻었다. 이 표
@GeneratedValue(strategy=GenerationType.TABLE)
내 BaseDomainObject에 @GeneratedValue의 전략을 변경해야하지만이 내 DB의 모든 테이블이 자동 증가 ID가
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'hibernate_sequences'.
다른 예외 발생 .. 그래서 난 몰라 최대 절전 모드로 관리 할 수 있습니다.
나는 무엇인가 놓친다?
해결책 아니다 @GeneratedValue (= GenerationType.SEQUENCE 전략)를 지정하여, 서열을 사용한다. SEQUENCE를 사용하면 "com.softrunner.init.SrtSQLServerDialect가 시퀀스를 지원하지 않습니다.".. 그래서 최대 절전 모드 3으로 돌아 가야한다는 것을 이해합니다. –
아마도 너무 늦었 겠지만 "JOINED"문제는 무엇입니까? – Swapnil