Я работаю над проектом maven с использованием JBoss и eclipselink, и у меня возникают проблемы при создании индексов (через JPA) в postgresql с сервером JBoss.
Таблицы и индексы создаются, когда свойство ddl-generationустанавливается в "drop-and-create-tables"
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
Но когда я устанавливаю это свойство в "create-or-extend-tables" или "create-tables", таблицы создаютсяи обновлены, но мои индексы НЕ.
<property name="eclipselink.ddl-generation" value="create-or-extend-tables"/>
Я попытался запустить один и тот же код на сервере Glassfish, и на Glassfish индексы СОЗДАЮТСЯ.Таким образом, проблема возникает, только когда я запускаю сервер JBoss (в конечном итоге, я хочу, чтобы мой проект работал на сервере JBoss).
Вот мой файл persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 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">
<persistence-unit name="Request_PU" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/gid_postges</jta-data-source>
<class>be.uclouvain.digit.request.models.LogRequest</class>
<class>be.uclouvain.digit.request.models.LogStatus</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<shared-cache-mode>NONE</shared-cache-mode>
<properties>
<property name="eclipselink.logging.level" value="FINE"/>
<property name="eclipselink.logging.level.sql" value="FINE"/>
<property name="eclipselink.logging.parameters" value="true"/>
<property name="eclipselink.ddl-generation" value="create-or-extend-tables"/>
<property name="eclipselink.deploy-on-startup" value="true"/>
</properties>
А вот пример сущности
@Entity
@Table(name = "Identity", schema = "digit")
@SequenceGenerator(name = "SEQ_Identity", sequenceName = "SEQ_Identity", schema = "digit", allocationSize = 1, initialValue = 500000)
@EntityListeners(IdentityListener.class)
@Index(columnNames = {"Lastname","Firstname"},name = "IdxName")
public class Identity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_Identity")
@Index
@Column(name = "Identity_Id")
private BigInteger identityId;
@NotNull
@Size(max = 50)
@Index
@Column(name = "Lastname", nullable = false, length = 50)
private String lastname;
@NotNull
@Size(max = 50)
@Column(name = "Firstname", nullable = false, length = 50)
private String firstname;
...
}