SORU
27 Mayıs 2009, ÇARŞAMBA


Kullanamazsınız sütun anahtar üretimi ile < kimliği;Birliği alt> ( TABLE_PER_CLASS )

com.bir şey.Üst sınıf:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class SuperClass implements Serializable {
    private static final long serialVersionUID = -695503064509648117L;

    long confirmationCode;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO) // Causes exception!!!
    public long getConfirmationCode() {
        return confirmationCode;
    }

    public void setConfirmationCode(long confirmationCode) {
        this.confirmationCode = confirmationCode;
    }
}

com.bir şey.Alt sınıf:

@Entity
public abstract class Subclass extends SuperClass {
    private static final long serialVersionUID = 8623159397061057722L;

    String name;

    @Column(nullable = false)
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Bana bu durum verir:

Caused by: org.hibernate.MappingException: Cannot use identity column key
generation with <union-subclass> mapping for: com.something.SuperClass

Bana KİMLİK oluşturmak için en iyi ve en uygun yolu nedir?Miras stratejimi değiştirmek istemiyorum.

CEVAP
28 Mayıs 2009, PERŞEMBE


İşte sorun bu karışımı "başına sınıf tablo" veraset ve GenerationType.Auto. MsSQL kimlik sütunu düşünün. Sütun dayanır. "Başına sınıf tablo" sınıf başına bir tablo kullanın ve her biri bir KİMLİĞİ vardır strateji.

Deneyin:

@GeneratedValue(strategy = GenerationType.TABLE)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Caramthros

    Caramthros

    10 AĞUSTOS 2007
  • Kassem G

    Kassem G

    25 EKİM 2006
  • TWiT Netcast Network

    TWiT Netcast

    27 EKİM 2005