나는 @MappedSuperclass 주석이 달린 AbstractEntity라는 클래스를 가지고있다. 그런 다음 AbstractEntity를 확장하는 User (@Entity)라는 클래스가 있습니다. 이 두 가지 모두 foo.bar.framework라는 패키지에 있습니다. 이 두 클래스를 사용할 때 모든 것이 잘 작동합니다. 하지만 이제는이 파일들이 들어있는 병을 다른 프로젝트로 가져 왔습니다. User 클래스를 재사용하고 몇 가지 추가 필드로 확장하고 싶습니다. 나는 @Entity public class User extends foo.bar.framework.User
이 트릭을 할 것이라고 생각했지만,이 사용자 구현은 AbstractEntity의 필드 만 상속 받지만 foo.bar.framework.User의 필드는 상속받지 않는다는 것을 알았습니다. 질문은, 두 번째 User 클래스가 첫 번째 User 엔터티 클래스의 모든 필드를 상속 받도록하려면 어떻게해야합니까?엔터티 확장하기
두 가지 사용자 클래스 구현에는 @Table (name = "name")으로 정의 된 다른 테이블 이름이 있습니다.
내 클래스는 EclipseLink는 "FIRSTNAME을" "myappuser"필드 "ID", "consistencyVersion"를 포함라는 이름의 테이블을 생성합니다,이
package foo.bar.framework;
@MappedSuperclass
abstract public class AbstractEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected Long id;
@Column(nullable = false)
@Version
protected Long consistencyVersion;
...
}
위의 코드와
package foo.bar.framework;
@Entity
@Table(name = "foouser")
public class User extends AbstractEntity {
protected String username;
protected String password;
....
}
package some.application;
@Entity
@Table(name = "myappuser")
public class User extends foo.bar.framework.User {
protected String firstname;
protected String lastname;
protected String email;
....
}
처럼 , "성"및 "전자 메일". "username"과 "password"필드는 테이블에 생성되지 않습니다. 이것이 바로 제가 겪고있는 문제입니다.
어떻게 abstractuser의 필드 만 상속 받았는지 확인 했습니까? – Bozho
더 많은 코드를 보여주고 기대하는 것과 얻을 수있는 것을 설명하십시오 (자바 레벨과 db 레벨 모두). –
@Bazho, 내 코드를 실제 데이터베이스 테이블과 비교했습니다. @ 파스칼 Thivent, 당신이 요청한 정보가 포함되어 있습니다. –