我跟踪了一下程序,发现就是在初始化EntityManagerFactory工厂的时候,报错!
在数据库里面我最开始是建立好了相应的表,以为openJPA会自动反响映射,后来删了该表。这样还是报同样的错
Exception in thread "main" <openjpa-1.0.0-r420667:568756 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: ORA-00955: 名称已由现有对象使用
 {stmnt 20928577 CREATE TABLE OPENJPA_SEQUENCE_TABLE (ID NUMBER NOT NULL, SEQUENCE_VALUE NUMBER, PRIMARY KEY (ID))} [code=955, state=42000]
at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:549)
at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:449)
at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:170)
at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:130)
at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:186)
at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager这是省掉属性的get/set方法的实体类@Entity
@Table(name="PERSON")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
private long id; @Column(name = "NAME", nullable = false)
private String name; @Column(name = "AGE", nullable = false)
private int age; @Column(name = "ADDRESS")
private String address;
}persistent.xml文件<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
    
<persistence-unit name="orcl">
  <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
  <class>com.cn.bsm.test.jpa.model.Person</class>
  <properties>
   <property name="openjpa.ConnectionURL" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
            <property name="openjpa.ConnectionDriverName" value="oracle.jdbc.driver.OracleDriver"/>
            <property name="openjpa.ConnectionUserName" value="system"/>
            <property name="openjpa.ConnectionPassword" value="orcl"/>
            <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/> 
   <property name="openjpa.Log" value="DefaultLevel=ERROR"/>
  </properties>
  
</persistence-unit>
</persistence>
EntityManager类public class BaseEntityManager { private static final Properties jpaPropertites = new Properties(); private static final String DEFAULT_DATABASE = "orcl"; private static EntityManagerFactory entityManagerFactory = null; private static EntityManager entityManager = null; public static Properties getJpapropertites() {
return jpaPropertites;
} public static EntityManagerFactory getEntityManagerFactory() {
entityManagerFactory = Persistence.createEntityManagerFactory(
DEFAULT_DATABASE, jpaPropertites);
return entityManagerFactory;
} public static EntityManager getEntityManager() {
if (entityManagerFactory == null) {
entityManagerFactory = getEntityManagerFactory();
}
entityManager = entityManagerFactory.createEntityManager();
return entityManager;
} public static EntityTransaction getTransaction() {
if (entityManager == null) {
entityManager = getEntityManager();
}
return entityManager.getTransaction();
}

public static void close(){
if(entityManager!=null){
entityManager.close();
}
if(entityManagerFactory!=null){
entityManagerFactory.close();
}
}
}