Я создал следующий компонент сущности и указал два столбца, как являющиеся уникальным. Теперь моя проблема состоит в том, что таблица составлена без ограничения на уникальность данных и никаких ошибок в журнале. У кого-либо есть идея?
@Entity
@Table(name = "cm_blockList", uniqueConstraints = @UniqueConstraint(columnNames = {"terminal", "blockType"}))
public class BlockList {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name="terminal")
private Terminal terminal;
@Enumerated(EnumType.STRING)
private BlockType blockType;
private String regEx;
}
Хорошо, я нашел другой способ сделать дизайн. Скорее потому, что дизайн эволюционировал, чем работа вокруг него.
Однако я слышал от коллеги, у которого была такая же проблема, что уникальные ограничения создаются только спящим режимом (мы запускаем JBoss 4.3), когда создается вся база данных. Это не сработает, если вы создадите новую таблицу в существующей базе данных.
Поэтому в persistence.xml необходимо установить hibernate.hbm2ddl.auto
на create-drop
, чтобы он работал. Однако я не могу это подтвердить.
Больше предложений, чем реального ответа ...
вам следует уточнить, какого провайдера JPA (и версию) вы используете для таких вопросов.
Я заметил, что один из ваших столбцов является частью ассоциации ManyToOne
, это может быть «особый» случай, который не обрабатывается вашим провайдером JPA. Под «плохо обработанным» я подразумеваю ошибку. Я бы проверил средство отслеживания проблем на предмет существующей проблемы (и, возможно, создал бы новую, ваш случай кажется совместимым с JPA).