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

  • BroadCity

    BroadCity

    10 ŞUBAT 2010
  • Day9TV

    Day9TV

    22 NİSAN 2010
  • expertvillage

    expertvillag

    5 NİSAN 2006