У меня есть существующая таблица для TransactionLogs, которая связана либо с External, либо с InternalType. идентификаторы, соответствующие денежной корректировке и игровой транзакции, хранятся в одном столбце с именем идентификатор транзакции , а в отдельном столбце с именем тип указывается, с какой таблицей она связана
Из-за природы существующей таблицы я отобразил ее в виде наследования одной таблицы:
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "TYPE", discriminatorType = DiscriminatorType.INTEGER)
public class TransLog implements Serializable {
@Id
@GeneratedValue
private Long id;
private Integer type;
// getters and setters
}
@Entity
public class InternalAdjustmentTransLog extends TransLog {
@ManyToOne
@JoinColumn(name = "TransID", nullable = false)
private InternalAdjustmentRecord internalAdjustmentRecord;
// getters and setters
}
@Entity
public class ExternalTransLog extends TransLog {
@ManyToOne
@JoinColumn(name = "TransID", nullable = false)
private ExternalAdjustmentRecord externalAdjustmentRecord;
}
каждый из этих двух подклассов имеет свои подклассы с определенными значениями дескриптора.
С приведенной выше настройкой есть случаи, когда мне нужно получить унифицированные данные обоих
внутренние и внешние записи. Каков наилучший способ сделать это? Сначала я подумал, что будет достаточно использовать TransLog в качестве корневого класса для запроса (я использую критерии jpa). тем не менее, мне нужно получить TransId (который определен в подклассах и указывает на 2 разных объекта, не имеющих отношения).
Спасибо.