मैं कक्षा मीडिया से विरासत के साथ एक कक्षा सीडी है:अवहेलना में शामिल हो गए-विरासत जेपीए के साथ विदेशी कुंजी नाम/हाइबरनेट
सीडी:
@Entity
public class CD extends Media {
...
}
मीडिया:
@Entity(name = "media")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Media extends PersistenceId<Long> {
...
}
जेपीए स्वत: जनरेट करता एक विदेशी कुंजी नाम और मैं इसे जिस नाम से चाहता हूं उसे ओवरराइड करना चाहता हूं:
03-10 18: 16: 58.174 [मुख्य] डीबग org.hibernate.SQL - बदल तालिका सीडी जोड़ने बाधा FK_ehd468g2cptgh6bq6sxe75xlf विदेशी कुंजी (आईडी) का संदर्भ मीडिया (आईडी)
कि कैसे करना है? मैंने कोशिश की:
@Entity
@AssociationOverride(
name = "id",
foreignKey = @ForeignKey(name = "fk_cd_media")
)
public class CD extends Media {
...
}
और
@Entity
@PrimaryKeyJoinColumn([email protected](name = "fk_cd_media"))
public class CD extends Media {
...
}
लेकिन यह काम नहीं करता।
यहाँ तालिका बनाने एसक्यूएल उत्पन्न होता है:
CREATE TABLE `cd` (
`artist` varchar(255) DEFAULT NULL,
`year` int(11) NOT NULL,
`id` bigint(20) NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `FK_ehd468g2cptgh6bq6sxe75xlf` FOREIGN KEY (`id`) REFERENCES `media` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
मैं चाहूँगा:
@Entity
@PrimaryKeyJoinColumn([email protected](name = "fk_cd_media"))
public class CD extends Media {
...
}
समस्या आप है:
CONSTRAINT `fk_cd_media` FOREIGN KEY (`id`) REFERENCES `media` (`id`)