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

  • DominicFear

    DominicFear

    30 Kasım 2006
  • FOSDEM

    FOSDEM

    13 Ocak 2009
  • khloe brooks

    khloe brooks

    25 Temmuz 2011