Oracle и HIbernate, проблемы с генераторами последовательностей в БД - PullRequest
2 голосов
/ 24 июня 2010

У меня есть следующая сущность (опущены геттеры и сеттеры) ...

@Entity
@Table(name = "TBL_PROJECT_RUN")
public class ProjectRunEntity {

    @Id
    @Column(name = "ID")
    @GeneratedValue(generator = "StakeholdersSequence")
    @SequenceGenerator(name = "StakeholdersSequence", sequenceName = "STAKEHOLDERS_UPDATE_SEQ", allocationSize = 1)
    private Integer id;

    @Column(name = "REPORT_RUN_DATE")
    private Date systemRunDate;

    @Column(name = "JIRA_PROJECT_NAME")
    private String jiraProjectName;

    @Column(name = "JIRA_PROJECT_DESC")
    private String jiraProjectDescription;

    @Column(name = "RUNBY")
    private String runBy;

    @Column(name = "HEADER_TEXT")
    private String headerText;

    @Column(name = "FOOTER_TEXT")
    private String footerText;

    @Column(name = "JIRA_ID")
    private String jiraId;

    @Column(name = "TO_EMAIL")
    private String toEmail;

    @Column(name = "CC_EMAIL")
    private String ccEmail;

    @OneToMany(fetch = FetchType.EAGER, mappedBy = "projectRunEntity")
    private List<ProjectRunDetailsEntity> projectRunDetailsEntities;

Тогда я добавляю его в базу данных вот так ...

 final Session session = sessionProvider.get();
    session.persist(projectRunEntity);
    session.flush();
    return projectRunEntity.getId();

Идентификатор, возвращаемый здесь, не является фактическим идентификатором в базе данных, он равен 1 или 2. Пожалуйста, обратите внимание, что я разделяю одну последовательность для всех идентификаторов во всех таблицах в моем проекте, так что у любого данного объекта есть уникальный индекс для всего проекта. Что может привести к неправильному идентификатору, как это?

Ответы [ 2 ]

2 голосов
/ 24 июня 2010

Оказывается, что веб-интерфейс для Oracle Express автоматически создает триггеры, чем вставляет идентификатор из этой последовательности перед вставкой объекта строки.Это означало, что генератор в oracle всегда был на 1 позади.Чтобы решить эту проблему, я удалил триггеры.

1 голос
/ 24 июня 2010

На ум приходят две возможности:

Вы говорите, что у вас есть общая последовательность.Вы вставляете в другие таблицы одновременно?(что может увеличить последовательность).

Есть ли в таблице базы данных триггер, который вставляет значение последовательности в столбец id?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...