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

  • Cole Rolland

    Cole Rolland

    23 Kasım 2008
  • How to Cook ?

    How to Cook

    31 Ocak 2007
  • OVERWERK

    OVERWERK

    6 Temmuz 2010