【问题标题】:Class not mapped exception (but it is mapped)?类未映射异常(但已映射)?
【发布时间】:2012-09-12 05:49:03
【问题描述】:

我得到了一个类未映射的异常,但是我想我确实映射了它!我有 2 个类 ClientAppts 和 Appointments 有一对多的关系。我想得到所有的客户和他们的约会日期。是什么原因造成的?欢迎所有建议。

这是课程:

@Entity(name="ClientAppts")
@Table(name="person")
public class ClientAppts {
private Integer person_id;
private String  fName;
private String  lName;
private Date    appt;
private String  phone;
private String  cell;

private String  address1;
private String  address2;
private String  city;
private String  state;
private String  zip;
private String  doctor;
private String  notes;

@ElementCollection
@CollectionTable(name="Appointment", joinColumns= @JoinColumn(name="person_id"))
@Column(name="appt")
Collection<Date> appointments;

    // various getters and setters follow.

为了清楚起见,这里是上面提到的 Appointment 类:

@Entity(name="Appointment")
@Table(name="appointment")

public class Appointment {
private int         id;
private Date        appt;
private Date        apptfinish;
private String      title;
private String      location;
private BigDecimal  fee;
private BigDecimal  amtPaid;
private Boolean     serviceRendered;
private int         person_id;
private String      description;

下面是引发异常的代码:

List<ClientAppts> list = getSessionFactory().getCurrentSession().createQuery(" from ClientAppts client order by client.lName ").list();

最后,堆栈跟踪:

org.hibernate.hql.internal.ast.QuerySyntaxException: ClientAppts 未映射 [来自 ClientAppts 客户端订单,按 client.lName ] 在 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:326) 在 org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3252) 在 org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3141) 在 org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:694) 在 org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:550) 在 org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:287) 在 org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:235) 在 org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:248) 在 org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183) 在 org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136) 在 org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:101) 在 org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:80) 在 org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:119) 在 org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:215) 在 org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:193) 在 org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1649) 在 com.dave.user.dao.UserDAO.getClientAppts(UserDAO.java:130) 在 com.dave.user.service.UserService.getClientAppts(UserService.java:126) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 在 org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 在 $Proxy251.getClientAppts(未知来源) 在 com.dave.managed.bean.AppointmentsMB.loadAppointments(AppointmentsMB.java:45) 在 com.dave.managed.bean.AppointmentsMB.init(AppointmentsMB.java:40) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.glassfish.faces.integration.GlassFishInjectionProvider$2.run(GlassFishInjectionProvider.java:382) 在 java.security.AccessController.doPrivileged(本机方法) 在 org.glassfish.faces.integration.GlassFishInjectionProvider.invokeLifecycleMethod(GlassFishInjectionProvider.java:376) 在 org.glassfish.faces.integration.GlassFishInjectionProvider.invokePostConstruct(GlassFishInjectionProvider.java:306) 在 org.glassfish.faces.integration.GlassFishInjectionProvider.invokePostConstruct(GlassFishInjectionProvider.java:229) 在 com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:223) 在 com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:105) 在 com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409) 在 com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269) 在 com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244) 在 com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116) 在 com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) 在 com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) 在 com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:103) 在 com.sun.el.parser.AstValue.getValue(AstValue.java:179) 在 com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224) 在 com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109) 在 javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) 在 javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182) 在 javax.faces.component.UIOutput.getValue(UIOutput.java:169) 在 org.primefaces.component.calendar.CalendarUtils.getValueAsString(CalendarUtils.java:35) 在 org.primefaces.component.calendar.CalendarRenderer.encodeEnd(CalendarRenderer.java:58) 在 javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) 在 com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312) 在 com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105) 在 javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) 在 com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304) 在 com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185) 在 com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129) 在 javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757) 在 javax.faces.render.Renderer.encodeChildren(Renderer.java:168) 在 javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757) 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) 在 com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402) 在 com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) 在 javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288) 在 org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper.renderView(ResourceViewHandlerWrapper.java:93) 在 com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) 在 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 在 com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) 在 org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) 在 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) 在 org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) 在 com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) 在 com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) 在 com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849) 在 com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746) 在 com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045) 在 com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228) 在 com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 在 com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 在 com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 在 com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 在 com.sun.grizzly.ContextTask.run(ContextTask.java:71) 在 com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 在 com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 在 java.lang.Thread.run(Thread.java:662)

【问题讨论】:

    标签: hibernate


    【解决方案1】:

    试试这个关系映射:

    public class ClientAppts {
    ...
    
    @OneToMany(mappedBy = "clientAppt", fetch = FetchType.LAZY, trgetEntity = Appointment.class)
    private Collection<Date> appointments;
    ...
    }
    

    public class Appointment {
    ...
    
    @ManyToOne
    private ClientAppts clientAppt;
    ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 2016-02-05
      • 2012-05-20
      相关资源
      最近更新 更多