hibernate annotations - héritage avec @MappedSuperclass - valeurs ne sont pas définies à la classe de base des champs - erreur étrange

Je suivais Hibernate: Utilisation d'une Classe de Base pour Mapper les Champs Communs et openjpa héritage tutoriel de mettre le bon colonnes comme ID, lastModifiedDate etc dans la table de base.

Mon annoté mappages sont comme suit :

BaseTable :

@MappedSuperclass
public abstract class BaseTable {
    @Id
    @GeneratedValue
    @Column(name = "id")
    private int id;

    @Column(name = "lastmodifieddate")
    private Date lastModifiedDate;
...

Personne de table -

    @Entity
    @Table(name = "Person ")
    public class Person extends BaseTable  implements Serializable{

    @Column(name = "name")
    private String name;
...

Instruction Create généré :

create table Person (id integer not null auto_increment,  lastmodifieddate datetime, name varchar(255), primary key (id)) ; 

Après que j'ai sauver une Personne objet de db,

Person p = new Person();
p.setName("Test");
p.setLastModifiedDate(new Date());
..

getSession().save(p);

Je suis en train de le champ de date mais, c'est d'enregistrer l'enregistrement avec l'ID généré et LastModifiedDate = null, Name="Test".

Instruction Insert :

insert into Person (lastmodifieddate, name) values (?, ?)
binding parameter [1] as [TIMESTAMP] - <null>
binding parameter [2] as [VARCHAR] - Test

Lu par l'ID de la requête :
Quand je fais hibernate query (obtenir Par ID) comme ci-dessous, Il lit par personne donnée.

Criteria c = getSession().createCriteria(Person.class);
c.add(Restrictions.eq("id", id));
Person person= c.list().get(0);
//person has generated ID, LastModifiedDate is null

select query select person0_.id as id8_,  person0_.lastmodifieddate as lastmodi8_, person0_.name as name8_ from Person person0_
 - Found [1] as column [id8_]
 - Found [null] as column [lastmodi8_]
 - Found [Test] as column [name8_ ]

ReadAll requête :

Query query = getSession().createQuery("from " + Person.class.getName());
List<Person> allPersons=query.list();

SQL correspondant pour lire tous les

select query select person0_.id as id8_,  person0_.lastmodifieddate as lastmodi8_, person0_.name as name8_ from Person person0_
- Found [1] as column [id8_]
- Found [null] as column [lastmodi8_]
- Found [Test] as column [name8_ ]
- Found [2] as column [id8_]
- Found [null] as column [lastmodi8_]
- Found [Test2] as column [name8_ ]

Mais quand j'imprime la liste de la console, à sa plus bizarre. c'est la sélection de la Liste de la Personne objet avec

  • Les champs ID = 0 (pourquoi tous 0 ?)
  • LastModifiedDate = null
  • Nom de champs ont des valeurs valides

Je ne sais pas quoi de mal ici. Pourriez vous s'il vous plaît regardez?

Pour info,

Mon Hibernate-core version : 4.1.2, MySQL version de Connecteur : 5.1.9 .

En résumé, Il y a deux problèmes ici

  • Pourquoi je reçois Tous les Champs ID =0 lors de l'utilisation de tout lire?
  • Pourquoi le LastModifiedDate n'est pas inséré?
  • Ce type de ща 'lastmodifieddate' en DB?
  • Son datetime . La cartographie est la génération de colonnes dans la Table DB correctement.
  • Pour id, ce fournisseur de persistance utilisez-vous?
  • Je suis de l'utilisation d'Hibernate...
  • <fournisseur> dans persistence.xml. HibernatePersistance?
  • Désolé, je n'ai pas vous. Je n'ai pas de persistence.xml fichier. Je suis à l'aide de Spring+Hibernate et d'Annotation pour la cartographie des objets persistants. Pourriez-vous me dire quelle est la persistence provider vous êtes en train de parler?
  • qu'est-ce que la db utilisé? pouvez-vous fournir à la table de création de requête, vous pouvez également activer la journalisation des requêtes hibernate, pouvez-vous voir les requêtes qui sont exécutées
  • Ses MySQL. J'ai posté les requêtes générées après l'exploitation. Merci.

InformationsquelleAutor gtiwari333 | 2012-06-16