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,那么你可以声明一些更像上面声明的方法。

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

(13)
接入点 /站和网桥/路由器之间的区别(m2 access point)
上一篇
如何在COBOL中对PICX子句进行REDEFINE和执行算术运算
下一篇

相关推荐

  • chinesefedome黄金如何利用黄金时代的优势实现全国一体化

    ChineseFederation Gold(CFG)是一个开源的区块链协议,旨在构建一个可扩展、安全、可信赖的分布式账本系统。它采用了一种特殊的共识机制,可以支持多种应用,并且可以满足不同类型的用户需求。…

    2024-03-21 03:30:40
    0 19 10
  • java random 范围:Unlocking the Power of Randomness in Java

    示例示例Java Random范围指的是使用Java Random类生成随机数的范围,即生成的随机数的最大值和最小值。Java Random类提供了多种方法来生成随机数,其中最常用的是nextInt(int n)方法,该方法可以生成一个0到n之间的随机整数,其中n代表最大值,如果要生成一个0到100之间的随机整数,可以使用以下代码:…

    2023-04-09 02:29:34
    0 11 48
  • javascriptdom编程艺术:JavaScript DOM Programming Art

    JavaScript DOM编程艺术是一种使用JavaScript来操纵HTML文档的技术。它可以让开发者在浏览器中创建动态、交互式的Web页面。…

    2023-12-17 03:58:09
    0 23 51
  • java random用法:Unlocking the Secrets of Java Random

    Java Random类用于生成伪随机数,它是java.util包中的一个类。它可以用来生成各种类型的随机数,如整数、浮点数、布尔值等。…

    2023-03-16 05:23:32
    0 97 70
  • 数据库运维:数据库设计-二维平铺网格(racewarkingdoms)

    关于数据库运维的问题,在racewarkingdoms中经常遇到,不久前,我玩了一个名为 racewarkingdoms 的网络游戏。它使用了一个基于 2D 文本的系统。我感兴趣的是地图。该地图由 X 方向上的 255 个图块和 Y 方向上的 255 个图块组成。这些地图总共有 5 个。但是令人惊讶的是,每个地图都包含如此多的数据。每个图块都包含自己的“王国”,每个图块大约有 50 个变量。然后…

    2022-12-21 11:02:28
    0 38 63
  • Com.baomidou:将Domain.com/shop更改为domain.com

    关于Com.baomidou的问题,在domain .shop中经常遇到,我最近买了一个.Shop 域名,安装了 Wordpress 然后 Woocommerce。问题是,当我安装 Woocommerce 插件时,它会自动在我的网站上创建一个产品页面,网址如下:Domain.shop / SHOP,我希望产品页面成为网站的主页 Domain.shop 而不是 domain.shop / SHOP。…

    2022-12-05 14:24:31
    0 23 99
  • java中static修饰的变量:静态变量在Java中的应用

    static修饰的变量是一个静态变量,也称为类变量,它属于类,而不属于某个对象。静态变量在内存中只有一个副本,所有的对象共享这一个副本。…

    2023-04-16 09:28:00
    0 19 26
  • win7玩cf卡顿怎么解决:解决Win7环境下CF游戏卡顿问题

    尝试更新系统:可能是由于系统缺少某些补丁或者更新导致CF卡顿,可以尝试在Windows Update中进行检查更新,并安装最新的补丁和更新。更新显卡驱动:可能是由于显卡驱动过旧或者不兼容导致CF卡顿,可以尝试更新显卡驱动,可以到显卡厂商官网下载最新的驱动进行安装。…

    2023-04-10 10:31:26
    0 57 71

发表评论

登录 后才能评论

评论列表(88条)