Присвоение @GeneratedValue другому столбцу идентификатора - PullRequest
2 голосов
/ 17 ноября 2011

У меня есть модель, как показано ниже:

@Entity
@Table(name="QUESTIONNAIRE")
@SequenceGenerator(name = "RA_QA_SEQ", sequenceName = "RA_QUESTIONNAIRE_SEQ")
public class Questionnaire {

    @Id
    @GeneratedValue(generator = "RA_QA_SEQ")
    @Column(name = "QUESTID")
    private long questionID;

    @Column(name = "QUESTION")
    private String question;

    @GeneratedValue(generator = "RA_QA_SEQ")
    @Column(name = "QUESTORDER")
    private long questionOrder;

    @Column(name = "QUESTCATEGORYID")
    private long questionCatgoryID;

        ....... list of setters and getters.......
}

Здесь я хочу, чтобы значение «questionID» было вставлено для столбца «questionOrder» также в БД.Я подумал передать @GeneratedValue (generator = "RA_QA_SEQ") в "questionOrder", но я все равно получаю 0 для "questionOrder" в БД, но "questionID" получает правильное значение последовательности.

Пожалуйста, предложите мне, как ятакже получит значение «questionID» для «questionOrder».

1 Ответ

0 голосов
/ 17 ноября 2011

Из спецификации JPA 2.0:

11.1.17 Аннотация GeneratedValue

Аннотация GeneratedValue обеспечивает спецификацию стратегий генерации для значений первичногоключи.Аннотация GeneratedValue может применяться к свойству или полю первичного ключа объекта или сопоставленного суперкласса в сочетании с аннотацией Id .

Переносимые приложения не должны использовать аннотацию GeneratedValue для других постоянных полей или свойств.

Если вы хотите, чтобы только queryOrder содержал то же значение, я думаю, выможет сделать:

// 2 fields are mapped to the same column, so one of these needs to be read-only
@Column(name = "QUESTID", insertable=false, updateable=false)
private long questionOrder; 

HTH.

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