j'ai cette classe mère:Mise en veille prolongée et @DiscriminatorColumn question @DiscriminatorValue
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "BSEntity")
@DiscriminatorColumn(name = "resourceType", discriminatorType = DiscriminatorType.STRING, length = 32)
public abstract class BaseEntity {
et la sous-classe
@Entity
@Table(name = "BSCategory")
@DiscriminatorValue("Category")
public class CategoryEntity extends BaseEntity {
Mais quand je lance le programme, je reçois l'erreur suivante:
2010-06-03 10:13:54,222 [main] WARN (org.hibernate.util.JDBCExceptionReporter:100) - SQL Error: 1364, SQLState: HY000
2010-06-03 10:13:54,222 [main] ERROR (org.hibernate.util.JDBCExceptionReporter:101) - Field 'resourceType' doesn't have a default value
Des pensées?
Mis à jour: La base de données est MySQL. J'ai également changé la stratégie d'héritage à JOINED au lieu de SINGLE_TABLE. Aide
Une autre mise à jour: j'ai vu l'affichage suivant quelque part et il semble très intéressant: http://opensource.atlassian.com/projects/hibernate/browse/ANN-140
Nouvelle mise à jour: Si je devais utiliser l'approche SecondaryTable, comment pourrais-je procéder alors?
Mise à jour finale: il s'avère que la chose @Discriminator ne fonctionne pas bien avec hibernate. J'ai utilisé l'approche @SecondaryTable et qui a pris soin de ce problème pour moi. Merci à tous pour m'avoir aidé!
Quelle est la base de données? – Bozho
Veuillez expliquer quelle stratégie vous voulez utiliser (ce n'est pas un choix aléatoire) et quel est le résultat attendu au niveau de la base de données. –
La stratégie que je souhaite utiliser est la stratégie d'héritage "JOINED". Au niveau de la base de données, je souhaite que le champ appelé "resourceType" soit rempli avec la valeur "Category" spécifiée dans @DiscriminatorValue ("Category"). – user224270