Я хочу провести некоторый анализ старого кода и должен иметь возможность выдавать поток с конкретная дата. Я не хочу создавать снимок или рабочее пространство, мне просто нужен весь исходный код по состоянию на шесть месяцев назад. Есть ли простой способ сделать это?
На этом этапе моего исследования я думаю, что мне может понадобиться использовать команду hist
, чтобы получить самую последнюю транзакцию на указанную дату, создать рефтри. , а затем обновите этот номер транзакции. Однако, когда я это делаю, я получаю
открытый класс Customer {@Id @GeneratedValue (стратегии = GenerationType.AUTO) ...
Несмотря на то, что я установил атрибут @Column (unique = true)
, я все равно вставляю повторяющуюся запись.
@Entity
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(unique=true )
private String name;
...
}
Я установил имя
, используя обычный EL
в JSF
. Я не создал таблицу
, используя JPA
Я не создавал таблицу с использованием JPA
Тогда вы должны добавить уникальное ограничение к своей таблице в операторе CREATE
, например, если вы используете MySQL:
create Customer (id int primary key, name varchar(255) unique);
Элемент unique = true
аннотации Column
и / или аннотация UniqueConstraint
, которые могут использоваться на уровне таблицы, используются для указания того, что уникальное ограничение должно быть включено в сгенерированный DDL .
Другими словами, они ничего не делают во время выполнения, проверка предоставляется базе данных (что имеет смысл, поскольку уникальность не может быть надежно протестирована на уровне Java 1 ) и если по какой-либо причине у вас нет соответствующих ограничений, определенных на уровне базы данных, ничего не произойдет.
Добавьте ограничение вручную:
ALTER TABLE Customer ADD CONSTRAINT customer_name_unq UNIQUE (name);
1 Если вы не установили блокировку таблицы (ой!), Вы не сможете проверить уникальность с помощью запроса SQL в параллельной среде.