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

  • buttheadgsxr1000

    buttheadgsxr

    24 Ocak 2008
  • cosmicrocketman

    cosmicrocket

    17 NİSAN 2006
  • discokatze

    discokatze

    23 EYLÜL 2009