272 votes

Exception hibernate: org.hibernate.AnnotationException: aucun identifiant spécifié pour l'entité: com..domain.idea.MAE_MFEView

ne sais pas pourquoi je suis de cette exception. Je crois que mon modèle de mon point de vue doit être incorrect?

package com.domain.idea;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.hibernate.annotations.AccessType;

/**
 * object model for the view [InvestmentReturn].[vMAE_MFE]
 */
@Entity
@Table(name="vMAE_MFE", schema="InvestmentReturn")
@AccessType("field")
public class MAE_MFEView
{
    /**
     * trade property is a SuggestdTradeRecommendation object
     */
    @OneToOne(fetch = FetchType.LAZY , cascade = { CascadeType.PERSIST })
    @JoinColumn(name = "suggestedTradeRecommendationID")
    private SuggestedTradeRecommendation trade;

    /**
     * Most Adeverse Excursion value
     */
    private int MAE;
    //tb
    /**
     * @return MAE property
     */
    public int getMAE()
    {
        return MAE;
    }

    /**
     * Most Favorable Excursion value
     */
    private int MFE;

    /**
     * @return MFE property
     */
    public int getMFE()
    {
        return MFE;
    }

    /**  * 
     * @return trade property
     * see #trade
     */
    public SuggestedTradeRecommendation getTrade()
    {
        return trade;
    }
}

toute aide serait appréciée

Mise à jour: j'ai changé mon code ressemble à ceci:

    package com.domain.idea;

import javax.persistence.CascadeType;
import javax.persistence.FetchType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.hibernate.annotations.AccessType;

/**
 * object model for the view [InvestmentReturn].[vMAE_MFE]
 */
@Entity
@Table(name="vMAE_MFE", schema="InvestmentReturn")
@AccessType("field")
public class MAE_MFEView
{
    /**
     * trade property is a SuggestdTradeRecommendation object
     */
    @Id
    @OneToOne(fetch = FetchType.LAZY , cascade = { CascadeType.PERSIST })
    @JoinColumn(name = "suggestedTradeRecommendationID")
    private SuggestedTradeRecommendation trade;

    /**
     * Most Adeverse Excursion value
     */
    private int MAE;
    //tb
    /**
     * @return MAE property
     */
    public int getMAE()
    {
        return MAE;
    }

    /**
     * Most Favorable Excursion value
     */
    private int MFE;

    /**
     * @return MFE property
     */
    public int getMFE()
    {
        return MFE;
    }

    /**  * 
     * @return trade property
     * see #trade
     */
    public SuggestedTradeRecommendation getTrade()
    {
        return trade;
    }
}

mais maintenant j'ai cette exception:

Causés par: org.mise en veille prolongée.MappingException: impossible de déterminer le type de: com.domaine.idée.SuggestedTradeRecommendation, à table: vMAE_MFE, pour les colonnes: [org.mise en veille prolongée.la cartographie.La colonne(commerce)] au org.mise en veille prolongée.la cartographie.SimpleValue.getType(SimpleValue.java:292) au org.mise en veille prolongée.la cartographie.SimpleValue.isValid(SimpleValue.java:276) au org.mise en veille prolongée.la cartographie.RootClass.valider(RootClass.java:216) au org.mise en veille prolongée.cfg.La Configuration.valider la Configuration.java:1135) au org.mise en veille prolongée.cfg.La Configuration.buildSessionFactory(de Configuration.java:1320) au org.mise en veille prolongée.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) au org.mise en veille prolongée.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669) ... 145 plus

537voto

Bozho Points 273663

Il vous manque un champ annotées @Id. Chaque @Entity besoin d'un @Id - c'est la clé primaire dans la base de données.

Si vous ne voulez pas que votre entité à être conservées dans un tableau distinct, mais plutôt d'être une partie d'autres entités, vous pouvez utiliser @Embeddable au lieu de @Entity.

Si vous voulez simplement un objet de transfert de données pour conserver certaines données de la veille prolongée de l'entité, ne pas utiliser les annotations sur elle que ce soit, laisser un simple pojo.

Mise à jour: En ce qui concerne les vues SQL, Hibernate docs écrire:

Il n'y a pas de différence entre une vue et une table de base pour une Hibernate mapping. C'est transparent au niveau base de données

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X