Вы можете попробовать использовать https://bitbucket.org/snippets/frostbane/aAjxM .
my.namespace.ColorEnum = new Enum(
"RED = 0",
"GREEN",
"BLUE"
)
Это должно работать до ie8.
Хорошо, вот как я решил проблему:
Базовый класс:
@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 {
...
}
Я бы порекомендовал вам использовать тип наследования JOINED для базового класса. Это помещает все общие поля в базовую таблицу, а настройки - в определенные таблицы. Вот аннотация для этого:
@Inheritance(strategy=InheritanceType.JOINED)
Как только это будет сделано, вы можете практически использовать любую опцию секвенирования, поскольку все ваши идентификаторы всегда находятся в одной таблице. Вы можете использовать отдельную последовательность, если хотите, но она поддерживается не всеми поставщиками баз данных. Думаю, это не проблема, поскольку вы используете конкретно Oracle.
Я использовал это, и, похоже, он работает хорошо.
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;