Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > @SequenceGenerator & @Embeddable


Автор: chaos 4.12.2009, 12:31
Доброго времени суток!

столкнулся с проблемой:
есть таблица
Код

CREATE TABLE CLUB.STRINGS
(
    STRING_ID NUMBER(6, 0) NOT NULL,
    LANG_ID VARCHAR2(5) DEFAULT 'en_US' NOT NULL,
    TEXT NVARCHAR2(100) NOT NULL,
    CONSTRAINT STRINGS_PK PRIMARY KEY
    (
        STRING_ID, LANG_ID
    ) ENABLE
);


есть следующий мапинг
Код

@Embeddable
class StringsPK implements Serializable {
    private static final long serialVersionUID = 6241862330900979310L;

    @Column(name = "STRING_ID")
    public int stringId;

    @Column(name = "LANG_ID")
    public String langId;
}

@Entity
@Table(name = "STRINGS")
@IdClass(StringsPK.class)
@SequenceGenerator(name = "STRINGS_GENERATOR", sequenceName = "STRINGS_SEQUENCEE")
public class ClubString {
    @Id
    @GeneratedValue(generator = "STRINGS_GENERATOR")
    public int stringId;

    @Id
    public String langId;

    @Column(name = "TEXT", nullable = false, length = 100)
    public String text;

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("ClubString[string_id: ");
        sb.append(stringId);
        sb.append(", lang_id: ");
        sb.append(langId);
        sb.append(", text: ");
        sb.append(text);
        sb.append("]");
        return sb.toString();
    }
}



проблема заключается в следующем:
Если я для объекта ClubString задаю text, langId и сохраняю то stringId всегда = 0. Как заставить работать генератор для stringId?

Автор: Hidrag 4.12.2009, 14:26
Когда задаешь text, langId, попробуй для stringId задать null

Автор: chaos 4.12.2009, 14:54
Цитата(Hidrag @ 4.12.2009,  11:26)
Когда задаешь text, langId, попробуй для stringId задать null

попробовал у тип у stringId поменять на Integer - не помогло. генератор даже не вызывается :(

Автор: Hidrag 4.12.2009, 15:04
Код

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "commonBlockSequence")
    @DocumentId
    public Long getId() {
        return id;
    }



не?

Автор: chaos 4.12.2009, 15:39
Цитата(Hidrag @ 4.12.2009,  12:04)
Код

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "commonBlockSequence")
    @DocumentId
    public Long getId() {
        return id;
    }



не?

а что в этом примере есть, чего нет у меня?

Автор: Hidrag 4.12.2009, 17:11
Код

strategy = GenerationType.SEQUENCE

Автор: chaos 7.12.2009, 09:25
Hidrag, все не то  smile 

Автор: chaos 9.12.2009, 10:48
up

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)