Поскольку в одну из более новых версий JBPM были добавлены внутренние классы индексов:
@Entity
@Table(name="Attachment",
indexes = {@Index(name = "IDX_Attachment_Id",
columnList="attachedBy_id"),
@Index(name = "IDX_Attachment_DataId",
columnList="TaskData_Attachments_Id")})
@SequenceGenerator(name="attachmentIdSeq",
sequenceName="ATTACHMENT_ID_SEQ", allocationSize=1)
public class AttachmentImpl implements InternalAttachment {
...
@ManyToOne()
private UserImpl attachedBy;
...
}
attachBy_id столбец из индекса columnList с именем attach_by_id в базе данных.
Hibernate не может распознать правильное имя физического столбца и выдает исключение:
org.hibernate.AnnotationException: Невозможно создать ограничение уникального ключа (attachBy_id) для вложения таблицы: столбец базы данных «attachBy_id» не найден. Убедитесь, что вы используете правильное имя столбца, которое зависит от используемой стратегии именования (оно может не совпадать с именем свойства в сущности, особенно для реляционных типов)
Я не могу изменить код JBPM. Я также не хочу менять имя столбца в базе данных (в любом случае это не помогает), но мне нужно сопоставить attachBy_id с @Index columnList на attach_by_id в некоторых путь. Можно ли применить ту же стратегию именования для индекса columnList?