Что надлежащий JPA отображает для @Id в родительской и уникальной последовательности в базовых классах

Вы можете попробовать использовать https://bitbucket.org/snippets/frostbane/aAjxM .

my.namespace.ColorEnum = new Enum(
    "RED = 0",
    "GREEN",
    "BLUE"
)

Это должно работать до ie8.

9
задан Nathan Feger 23 June 2009 в 13:09
поделиться

2 ответа

Хорошо, вот как я решил проблему:

Базовый класс:

@MappedSuperclass
public abstract class DomainObject implements Serializable {
 @Id
 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="SEQ")
 @Column(name = "id", updatable = false, nullable = false)
 private Long id;

 .. rest of class
}

Потомок:

@Entity
@SequenceGenerator(name="SEQ",sequenceName="SEQ_DB_NAME")
public class BusinessObject extends DomainObject {

 ...

}
9
ответ дан 4 December 2019 в 21:51
поделиться

Я бы порекомендовал вам использовать тип наследования JOINED для базового класса. Это помещает все общие поля в базовую таблицу, а настройки - в определенные таблицы. Вот аннотация для этого:

@Inheritance(strategy=InheritanceType.JOINED)

Как только это будет сделано, вы можете практически использовать любую опцию секвенирования, поскольку все ваши идентификаторы всегда находятся в одной таблице. Вы можете использовать отдельную последовательность, если хотите, но она поддерживается не всеми поставщиками баз данных. Думаю, это не проблема, поскольку вы используете конкретно Oracle.

Я использовал это, и, похоже, он работает хорошо.

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
0
ответ дан 4 December 2019 в 21:51
поделиться
Другие вопросы по тегам:

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