как вывести накапливаемый поток по дате?

Я хочу провести некоторый анализ старого кода и должен иметь возможность выдавать поток с конкретная дата. Я не хочу создавать снимок или рабочее пространство, мне просто нужен весь исходный код по состоянию на шесть месяцев назад. Есть ли простой способ сделать это?

На этом этапе моего исследования я думаю, что мне может понадобиться использовать команду 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

17
задан Kukeltje 31 January 2018 в 12:55
поделиться

2 ответа

Я не создавал таблицу с использованием JPA

Тогда вы должны добавить уникальное ограничение к своей таблице в операторе CREATE , например, если вы используете MySQL:

create Customer (id int primary key, name varchar(255) unique);
6
ответ дан 30 November 2019 в 11:51
поделиться

Элемент unique = true аннотации Column и / или аннотация UniqueConstraint , которые могут использоваться на уровне таблицы, используются для указания того, что уникальное ограничение должно быть включено в сгенерированный DDL .

Другими словами, они ничего не делают во время выполнения, проверка предоставляется базе данных (что имеет смысл, поскольку уникальность не может быть надежно протестирована на уровне Java 1 ) и если по какой-либо причине у вас нет соответствующих ограничений, определенных на уровне базы данных, ничего не произойдет.

Добавьте ограничение вручную:

ALTER TABLE Customer ADD CONSTRAINT customer_name_unq UNIQUE (name);

См. Также

  • Спецификация JPA 1.0
    • 9.1.4 Аннотация UniqueConstraint
    • 9.1.5 Аннотация столбца
  • Документация MySQL

1 Если вы не установили блокировку таблицы (ой!), Вы не сможете проверить уникальность с помощью запроса SQL в параллельной среде.

18
ответ дан 30 November 2019 в 11:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: