Hibernate抛出org.hibernate.AnnotationException:没有为实体指定标识符:com..dom

为什么我得到这个异常?

为什么我得到这个异常?

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;
    public int getMAE()
    {
        return MAE;
    }
    /**
     * Most Favorable Excursion value
     */
    private int MFE;
    public int getMFE()
    {
        return MFE;
    }
    /**
     * @return trade property
     * see #trade
     */
    public SuggestedTradeRecommendation getTrade()
    {
        return trade;
    }
}

更新:我已经改变了我的代码看起来像这样:

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;
    public int getMAE()
    {
        return MAE;
    }
    /**
     * Most Favorable Excursion value
     */
    private int MFE;
    public int getMFE()
    {
        return MFE;
    }
    /**
     * @return trade property
     * see #trade
     */
    public SuggestedTradeRecommendation getTrade()
    {
        return trade;
    }
}

但现在我得到这个异常:

Caused by: org.hibernate.MappingException: Could not determine type for: com.domain.idea.SuggestedTradeRecommendation, at table: vMAE_MFE, for columns: [org.hibernate.mapping.Column(trade)]
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:292)
    at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:276)
    at org.hibernate.mapping.RootClass.validate(RootClass.java:216)
    at org.hibernate.cfg.Configuration.validate(Configuration.java:1135)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1320)
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
    ... 145 more
524

您缺少一个用@Id注释的字段。每个@Entity都需要一个@Id-这是数据库中的主键。

如果你不希望你的实体被保存在一个单独的表中,而是成为其他实体的一部分,你可以使用@Embeddable而不是@Entity

如果您只希望一个数据传输对象来保存来自休眠实体的一些数据,则无论如何都不要在其上使用注释-将其保留为简单的 pojo。

更新:关于 SQL 视图,Hibernate 文档写:

Hibernate 映射的视图和基表之间没有区别。这在数据库级别是透明的

264

对我来说,应该使用javax.persistence.Id而不是org.springframework.data.annotation.Id。对于遇到此问题的任何人,您可以检查是否导入了正确的Id类。

75

当您为 @ Id 导入与Javax.persistance.Id不同的库时,可能会引发此错误;您可能需要注意这种情况

在我的情况下,我有

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Table;
import org.springframework.data.annotation.Id;
@Entity
public class Status {
    @Id
    @GeneratedValue
    private int id;

当我改变这样的代码,它得到了工作

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Table;
import javax.persistence.Id;
@Entity
public class Status {
    @Id
    @GeneratedValue
    private int id;
14

的代码可以解决 NullPointerException。

@Id
@GeneratedValue
@Column(name = "STOCK_ID", unique = true, nullable = false)
public Integer getStockId() {
    return this.stockId;
}
public void setStockId(Integer stockId) {
    this.stockId = stockId;
}

如果你添加@Id,那么你可以声明一些更像上面声明的方法。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(564)
使用.NetC#使用SalesForce执行批量数据事务
上一篇
乌龟只能将可变编号分配给补丁吗 (turtle patch)
下一篇

相关推荐

  • python random.sample函数:Exploring the Magic of Random Sampling

    random.sample函数是Python random模块中的一个函数,用于从指定的序列中随机获取指定长度的片断。该函数不会修改原有序列。…

    2023-01-02 03:16:46
    0 67 50
  • cadomado女装是品牌吗一个让您轻松时尚的女装品牌

    Cadomado女装不是品牌,而是一家购物网站,提供各种服装、鞋子、配饰等产品。它的官网地址为https://www.cadomado.com/,可以直接在官网上购买产品。…

    2023-03-18 07:54:53
    0 60 62
  • A dom:MySpaceDOM

    关于A dom的问题,在html for myspace中经常遇到,我被赋予的任务是做一些工作来定制 MySpace 中艺术家的空间。似乎你有点侵入你想要的 HTML 到你的编辑配置文件页面 (其中有几个空框)。MySpace 页面,似乎已经是 HTML,所以你只能侵入。建议的“tweaks”包括不完整的 HTML 代码 (例如,<DIV>页面的一个标签,在没有</DIV>标签的任何地方…

    2022-12-22 15:40:09
    0 42 77
  • Co域名:创建类似co.cc的域名(co cc domain)

    关于Co域名的问题,在co cc domain中经常遇到,三个月前我在 co.ccc 注册了一个网站。我想知道他们是如何创建域名的,比如“.cc”而不是“.com”。我从来没有见过这样的网站,而且.cc 不是标准域名。所以我的问题是他们如何创建自己的域名?我可以创建自己的域名,如 www.abc.com 的 www.abc.jagdish insteda?…

    2022-12-29 02:54:31
    0 60 92
  • QuotaExceededError(DOM异常22):在隐身的Safari上已超过配额

    当我处于隐身模式时,我在 Safari 上获得QuotaExceededError (DOM Exception 22):The quota has been exceeded.。…

    2022-11-11 15:19:44
    0 18 52
  • Hibernate抛出org.hibernate.AnnotationException:没有为实体指定标识符:com..dom

    为什么我得到这个异常?…

    2022-11-11 15:18:18
    0 27 59
  • 如何使用反应路由器DOMv6的useLocation钩子

    2022-11-18 10:38:13
    0 83 18
  • cvt和自动挡哪个好提升驾驶体验的最佳选择

    CVT(可变转换器)是一种由传动带及传动轮组成的无级变速器,它可以在没有传动档位的情况下,根据驾驶者的驾驶习惯,自动调整传动轮之间的转速比,从而实现无级变速。自动挡是指车辆自动变速箱,它使用液力传动来实现变速,可以自动适应车辆的行驶状态,减少司机的疲劳,提高行车的舒适性。…

    2023-06-08 07:42:19
    0 39 88

发表评论

登录 后才能评论

评论列表(52条)