문제

다음과 같이 클래스 A가 있다고 가정합니다.

class A{
   int id;
   int getId(){};
   void setId(int id){};
}

그리고 다음과 같이 클래스 B :

@Entity
@Table(name="B")
class B extends A{
   string name;

   @Column(length=20)
   string getName(){}
   void setName(){}
}

Hibernate/JPA가 엔티티의 ID라는 것을 알 수 있도록 상속 ID 필드에 어떻게 주석을 달 수 있습니까? 나는 단순히 @id를 필드에 배치하려고 시도했지만 이것은 작동하지 않았습니다. 나는 단체를 만들려고 노력했지만 이것은 또한 작동하지 않았다.

도움이 되었습니까?

해결책

슈퍼 클래스 자체가 엔티티를 대표하는 것을 원하지 않는다고 가정하면 사용할 수 있습니다. @MappedSuperclass 슈퍼 클래스에서 서브 클래스가 지속성을 위해 속성을 상속받는 슈퍼 클래스에서 :

@MappedSuperclass
class A{
   int id;
   @Id
   int getId(){};
   void setId(int id){};
}

슈퍼 클래스를 추상화하는 것을 고려하십시오. 보다 이번 장 자세한 내용은 문서의.

다른 팁

사용할 수있는 여러 가지 전략이 있습니다. 다음은 시도 할 수있는 것입니다.

@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
class A{
   int id;

   @Id @GeneratedValue
   int getId(){};
   void setId(int id){};
}


@Entity
@Table(name="B")
class B extends A{
   string name;

   @Column(length=20)
   string getName(){}
   void setName(){}
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top