Java Hibernate不从实体创建表

Java Hibernate不从实体创建表,java,hibernate,postgresql,entity,Java,Hibernate,Postgresql,Entity,我创建了两个类,它们应该通过hibernate映射到表。第一个表(“citizenmissionpath”)映射正确,第二个表未创建 package com.eworld.missions; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.

我创建了两个类,它们应该通过hibernate映射到表。第一个表(“citizenmissionpath”)映射正确,第二个表未创建

package com.eworld.missions;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Index;

import com.eworld.citizen.EWCitizen;

@Entity(name="citizenMissionPath")
public class EWCitizenMissionPath {

@Id
@GenericGenerator(name="citizenMissionPathGenerator", strategy="increment")
@GeneratedValue(generator="citizenMissionPathGenerator")
private int id;

@OneToOne
@Index(name = "citizenMission_citizen_index")
@JoinColumn(name = "citizen_id")
private EWCitizen citizen;

@ManyToOne
@JoinColumn(name="missionsPath_id")
@Index(name = "citizenMissionPath_path_index")
private EWMissionsPath missionsPath;

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public EWCitizen getCitizen() {
    return citizen;
}

public void setCitizen(EWCitizen citizen) {
    this.citizen = citizen;
}

public EWMissionsPath getMissionsPath() {
    return missionsPath;
}

public void setMissionPath(EWMissionsPath missionsPath) {
    this.missionsPath = missionsPath;
}

}
并且此实体未映射:

package com.eworld.missions;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Entity;

import org.hibernate.annotations.GenericGenerator;

@Entity(name="missionsPath")
public class EWMissionsPath implements Serializable {

private static final long serialVersionUID = 6679306534591802340L;

@Id
@GenericGenerator(name="missionsPathGenerator", strategy="increment")
@GeneratedValue(generator="missionsPathGenerator")
private int id;

private String pathName;

private String order;

private int length=0;

public String getPathName() {
    return pathName;
}

public void setPathName(String pathName) {
    this.pathName = pathName;
}

public String getOrder() {
    return order;
}

public List<EWMissionType> getOrderParsed() {
    List<EWMissionType> missionOrder = new ArrayList<EWMissionType>();

    String[] strArray = order.split(",");
    int[] intArray = new int[strArray.length];
    for(int i = 0; i < strArray.length; i++) {
        intArray[i] = Integer.parseInt(strArray[i]);
    }
    for(int i = 0; i < strArray.length; i++) {
        int missionNumber = intArray[i];
        missionOrder.add(EWMissionType.values()[missionNumber]);
    }

    return missionOrder;
}

public void setOrder(String order) {
    this.order = order;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public void setLength(Integer length) {
    this.length = length;
}

public int getLength() {
    return length;
}
}

有人知道怎么做吗?

搜索谷歌“hibernate错误关系不存在”。它给出了很多以前的问题,其中一个可能适合你当然我在问这个问题之前已经搜索过了。我发现没有一个对我有用:(我找到了问题的解决方案。我将字段顺序的名称改为pathOrder,hibernate创建了这个表。看起来顺序在hibernate中是一个特殊的词。也许它会帮助某人。干杯!
<mapping class="com.eworld.missions.EWMissionsPath"/>
<mapping class="com.eworld.missions.EWCitizenMissionPath"/>
Thu Jan 16 10:06:08 CET 2014 org.hibernate.exception.SQLGrammarException: could not extract ResultSet
org.hibernate.exception.SQLGrammarException: could not extract ResultSet
at     org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.    java:123)
at     org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
at         org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126)
at     org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112)
at     org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:89)
at     org.hibernate.id.IncrementGenerator.initializePreviousValueHolder(IncrementGenerator.java:132)
at org.hibernate.id.IncrementGenerator.generate(IncrementGenerator.java:69)
at     org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:118)
at     org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:208)
at     org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:193)
at     org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:116)
at     org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:92)
at org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:662)
at org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:654)
at org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:650)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at     sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at     org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:356)
at sun.proxy.$Proxy35.saveOrUpdate(Unknown Source)
at com.eworld.database.EWMissionDatabase.createMissionsPath(EWMissionDatabase.java:432)
at     com.eworld.controllers.moderators.EWNewMissionPathController.addMissionPath(EWNewMissionPathController.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at     sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at     org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
at     org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMeth    od(AnnotationMethodHandlerAdapter.java:436)
at     org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
at     org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at     org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at     org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at     org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at     org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at     org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at     org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at     org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at         org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at     org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at     org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at     org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at     org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at     org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.postgresql.util.PSQLException: ERROR: relation "missionspath" does not exist
  Pozycja: 21
at     org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)
at     org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
at     org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:273)
    at     com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:116)
at     org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:80)
... 54 more