Java JPA 1实体3表

Java JPA 1实体3表,java,inheritance,jpa,entity,mappedsuperclass,Java,Inheritance,Jpa,Entity,Mappedsuperclass,我有三张桌子,每一张都有相同的列。其中一个具有原始测量数据,另一个具有聚合为分钟和小时的数据。在JPA中加载数据时,我希望每个数据集具有相同的实体/类。我用继承/mappedsuperclass尝试了一下,但到目前为止还没有成功(也不确定我是否做对了)。我得到的要么是没有拟合构造函数,要么是表没有映射。当我将Value实体的表设置为其中一个表时,它对该表有效,但是我希望能够在运行时从所有表加载数据 来自PersistenceManager.java @SuppressWarnings("unch

我有三张桌子,每一张都有相同的列。其中一个具有原始测量数据,另一个具有聚合为分钟和小时的数据。在JPA中加载数据时,我希望每个数据集具有相同的实体/类。我用继承/mappedsuperclass尝试了一下,但到目前为止还没有成功(也不确定我是否做对了)。我得到的要么是没有拟合构造函数,要么是表没有映射。当我将Value实体的表设置为其中一个表时,它对该表有效,但是我希望能够在运行时从所有表加载数据

来自PersistenceManager.java

@SuppressWarnings("unchecked")
public List<Value> getValues(Sensor sensor) throws Exception {
    String query = "SELECT v FROM ValueByHour v WHERE v.sensor = :sensor ORDER BY v.timestamp ASC";
    List<Value> list = em.createQuery(query, Value.class).setParameter("sensor", sensor).getResultList();
    return list;
}
}

堆栈跟踪

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: ValueByHour is not mapped [SELECT v FROM ValueByHour v WHERE v.sensor = :sensor ORDER BY v.timestamp ASC]
at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:180)
at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110)
at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:93)
at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:324)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3291)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3180)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:706)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:562)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:248)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:105)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:221)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:199)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1735)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:301)
... 36 more
原因:org.hibernate.hql.internal.ast.QuerySyntaxException:ValueByHour未映射[从ValueByHour v中选择v,其中v.sensor=:传感器顺序按v.timestamp ASC]
位于org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:180)
位于org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110)
位于org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:93)
位于org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:324)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3291)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3180)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:706)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:562)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:248)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.docomFile(QueryTranslatorImpl.java:183)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
在org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:105)
在org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:80)
位于org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
位于org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:221)
位于org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:199)
位于org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1735)
位于org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:301)
... 36多
如果有帮助,下面是整个项目


希望您能理解我的意图。

如果您想让我们告诉我们您的代码有什么问题,请向我们展示您的代码以及异常的堆栈跟踪。希望现在就足够了;)ValueByHour是打字错误吗?应该是Value probablyNo,这就是我想展示我的“尝试”的地方。。我有三张结构相同的桌子。。值,值按分钟,值按小时。。Value包含测量的原始数据,其他的包含分钟/小时的数据聚合集OK,所以我通过为所有值创建一个抽象类来解决它,然后为从中继承的每种类型的值创建一个抽象类。然后,我能够从所有表中将数据加载到相同的列表中。
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: ValueByHour is not mapped [SELECT v FROM ValueByHour v WHERE v.sensor = :sensor ORDER BY v.timestamp ASC]
at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:180)
at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110)
at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:93)
at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:324)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3291)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3180)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:706)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:562)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:248)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:105)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:221)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:199)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1735)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:301)
... 36 more