为什么会出现此异常?
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
您缺少带注释的字段@Id
。每个都@Entity
需要一个@Id
-这是数据库中的主键。
如果您不希望您的实体保留在单独的表中,而是希望成为其他实体的一部分,则可以使用@Embeddable
代替@Entity
。
如果您只想让数据传输对象保存来自hibernate实体的某些数据,则不对它进行任何注释-将其保留为简单的pojo。
更新:关于SQL视图,Hibernate文档写道:
Hibernate映射的视图和基表之间没有区别。这在数据库级别是透明的
我在下面的链接中了解“https://medium.com/swlh/multi-tenancy-implementation-using-spring-boot-hibernate-6A8E3ECB251A”教程 导致以下例外情况: null
问题内容: 我有以下配置: 我在com.example.domain中有我的Geoname类: 但是,在运行时,出现以下异常: 造成原因:org.hibernate.AnnotationException:未为实体指定标识符:org.hibernate.cfg.InheritanceState.determineDefaultAccessType(InheritanceState.java:277
我正在使用Spring Boot 1.5.10和Spring Boot starter数据jpa。我有一个暂存表和一个生产表,它们都有相同的结构,只是表名不同。列包括: 复合键1 复合键2 复合键3 列A 列B c列 我收到以下错误: 原因:org.hibernate.注释异常:没有为实体指定标识符:com.foo.bar.StagingTbl 我有一个复合主键,类定义为: 我的具体类: 标识符应
我有一个历史表映射到ManyToOne关系视图的应用程序,如下所示 运行应用程序时,遇到了著名的“找到了具有给定标识符的多行”。 因此,我进入调试以找出导致此问题的用户。事实上,它在数据库View对象上有一个副本。但是,在调试过程中,我偶然发现了以下“魔法” 不确定它是否与我的IDE有关,但当在intelliJ(Eclipse上显示)上使用代码检查器并发出以下命令时 它给了我错误,但当第二次这样做
我有以下配置: 我有我的Geoname类在com.example.domain: 然而,在运行时,我会遇到以下异常: 原因:组织。冬眠AnnotationException:未为实体com指定标识符。实例领域组织的地理名称。冬眠cfg公司。继承状态。在org上确定了faultaccesstype(InheritanceState.java:277)。冬眠cfg公司。继承状态。位于org的getEl
我用java编写了一个简单的程序,它创建到Oracle数据库的连接并执行更新查询。 查询成功执行,但如果更新查询包含以“F”开头的列,则抛出异常 “java.sql.SQLSyntaxErrorException:ORA-00904:“F”:无效标识符”。 如果我删除以“F”开头的列,那么< code > prepare statement . getparametermetadata()将正确执