Мы пытаемся настроить библиотеку общих объектов, которая будет использоваться несколькими приложениями, которые управляют подобными объектами Мы также настраиваем общую библиотеку для обработки постоянства в нескольких базах данных (некоторые postgres, некоторые mysql, h2 для тестирования и т. Д.). При этом объекты часто имеют базовый класс, который подкласс для конкретных целей. Мы изучили этот и другие ресурсы, чтобы выяснить, как аннотировать наши классы, чтобы они использовали стратегию наследования, объединяющую одну таблицу на подкласс, однако, когда мы компилируем прогон наших тестов, он, похоже, не ведет себя так, как http://viralpatel.net/blogs/hibernate-inheritance-table-per-subclass-annotation-xml-mapping/ (и другие посты) говорят, что так и будет.
Мы получаем предупреждения в hibernate.log
WARN AnnotationBinder: 1245 - HHH000137: Корневой объект не должен содержать PrimaryKeyJoinColum (s), будет игнорироваться: com.my.SubClass1
WARN AnnotationBinder: 661 - HHH000139: незаконное использование @Table в подклассе иерархии SINGLE_TABLE: com.my.SubClass1
и затем создается таблица baseclass1 со всеми полями из базы и подкласса.
Наши классы определены как:
@XmlType(name="baseclass1")
@XmlRootElement(name="baseclass1")
@XmlAccessorType(XmlAccessType.PROPERTY)
@Entity
@Table(name = "baseclass1")
@Inheritance(strategy=InheritanceType.JOINED)
public class BaseClass1 implements Serializable {
@Id
@Column(name="id")
private String id;
private String baseField1
...
}
@Entity
@Table(name="subclass1")
@PrimaryKeyJoinColumn(name="subclassid", referencedColumnName="id")
public class SubClass1 extends BaseClass1 {
private String subField1
....
}
Есть ли какие-то конфигурации / настройки в hibernate.cfg.xml или где-то еще, на что мы должны обратить внимание?