Мне нужно создать базу данных с двумя типами «модулей».
- классы, ориентированные на предметную область
- классы метаданных
В первой группе это просто простые (точнее, сложные) СУБД. Второй «блок» — это классы метаданных, которые собирают информацию о классах из первого блока.
Что я сделал:
Создан класс Entity, который является родительским для всей первой части:
@PersistenceAware @Inheritance(strategy = InheritanceStrategy.NEW_TABLE) public abstract class Entity implements Serializable { private static final long serialVersionUID = 1L; }
Создана нормальная схема, в которой все сущности каким-то образом наследуют
Entity
класс.Создан класс
InternalMapping
в качестве родителя всей концепции.@PersistenceCapable @Inheritance(strategy = InheritanceStrategy.NEW_TABLE) public abstract class InternalMapping implements Serializable { private static final long serialVersionUID = 1L; private Entity entity; //.. cut off getter and setter }
Создан
InternalMapping
дочерний элемент, который должен иметь эту функцию.
Наконец я обнаружил, что это не работает. Вероятно, потому что Entity не имеет никакого поля. Но если это так, я бы ожидал 2 поля: a primary key
и class name
. Таким образом, я бы сопоставил каждую сущность по двум координатам: ID
и class name
.
Любая идея, как решить эту проблему? Наконец, как будет выглядеть JDOQL
.
Ps. Я знаю, что RDBMS
не лучшее решение для такого рода проблем, но люди, с которыми я работаю, хотят иметь реляционную базу данных.