Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unsuccessful: alter table XXX drop constraint YYY in Hibernate/JPA/HSQLDB standalone

I am trying to run some Hibernate/JPA examples using an in-memory HSQL DB. The error message I get is the following:

13:54:21,427 ERROR SchemaExport:425 - HHH000389: Unsuccessful: alter table ReferringItem_map drop constraint FK5D4A98E0361647B8 13:54:21,427 ERROR SchemaExport:426 - user lacks privilege or object not found: PUBLIC.REFERRINGITEM_MAP 13:54:21,427 ERROR SchemaExport:425 - HHH000389: Unsuccessful: alter table ReferringItem_myCollection drop constraint FK75BA3266361647B8 13:54:21,427 ERROR SchemaExport:426 - user lacks privilege or object not found: PUBLIC.REFERRINGITEM_MYCOLLECTION 13:54:21,428 ERROR SchemaExport:425 - HHH000389: Unsuccessful: alter table ReferringItem_myList drop constraint FK6D37AA66361647B8 13:54:21,428 ERROR SchemaExport:426 - user lacks privilege or object not found: PUBLIC.REFERRINGITEM_MYLIST 13:54:21,428 ERROR SchemaExport:425 - HHH000389: Unsuccessful: alter table ReferringItem_mySet drop constraint FK3512699A361647B8 13:54:21,429 ERROR SchemaExport:426 - user lacks privilege or object not found: PUBLIC.REFERRINGITEM_MYSET 

The corresponding class is:

@Entity public class ReferringItem implements Serializable {      @Id     private long id;      @ElementCollection     private Collection<AnEmbeddable> myCollection         = new ArrayList<AnEmbeddable>();      @ElementCollection(fetch=FetchType.EAGER)     private Set<Long> mySet = new HashSet<Long>();      @ElementCollection(targetClass=String.class)     private List myList = new ArrayList();      @ElementCollection     private Map<String,AnEmbeddable> map         = new HashMap<String,AnEmbeddable>();      public ReferringItem() { }      // Setters & Getters  } 

The embeddable is:

@Embeddable public class AnEmbeddable implements Serializable {      private String s;      public AnEmbeddable() { }      public String getS() {         return s;     }      public void setS(String s) {         this.s = s;     }  } 

My persistence.xml:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">      <persistence-unit name="JPA" transaction-type="RESOURCE_LOCAL">          <provider>org.hibernate.ejb.HibernatePersistence</provider>          <class>com.jverstry.jpa.AuthorizedTypes.AuthorizedTypes</class>         <class>com.jverstry.jpa.AuthorizedTypes.OtherEntity</class>         <class>com.jverstry.jpa.AuthorizedTypes.SomeEmbeddable</class>          <properties>             <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver"/>             <property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:mem:testdb"/>             <property name="javax.persistence.jdbc.user" value="sa"/>             <property name="javax.persistence.jdbc.password" value=""/>             <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>             <property name="hibernate.hbm2ddl.auto" value="create-drop"/>         </properties>      </persistence-unit>  </persistence> 

I am on Hibernate 4.1.5.Final and HSQLDB 2.2.8.

Does anyone know what is causing this issue and how to solve it?

like image 504
Jérôme Verstrynge Avatar asked Aug 21 '12 12:08

Jérôme Verstrynge


1 Answers

You can ignore these errors. Combination of create-drop and empty (which is the case always for in-memory) database produces these for every database object it tries to drop. Reason being that there is not any database objects to remove - DROP statements are executed against empty database.

Also with normal permanent database such a errors do come, because Hibernate does not figure out before executing DROP statements does added object exist in database or is it new.

like image 116
Mikko Maunu Avatar answered Oct 07 '22 19:10

Mikko Maunu