(JPA) Может ли подчиненный объект иметь те же свойства, что и абстрактный объект, но с разными именами? - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть абстрактный класс, который сопоставляет столбец «год» переменной «год».

Один из моих подклассов также нуждается в той же самой переменной из того же столбца "год", но вместо этого его нужно назвать, например, "год создания". Как я могу это сделать?

У меня есть некоторые проблемы, так как я вообще не могу изменить состояние базы данных, и она ДРЕВНЯ, поскольку она восходит к 80-м годам ...

Именно поэтому в этом случае одна таблица содержит совершенно разные вещи, даже если они находятся только в одной таблице.

Так, например, одна строка в базе данных может определять автомобиль, и в этом случае год столбца должен быть виден как «год создания», а другая строка может определять взрыв, в этом случае тот же год столбца должен быть виден как «детонация». дата».

Я пытаюсь отобразить эту базу данных с помощью JPA и гибернации, чтобы я наконец смог определить, что к чему, мне просто нужна эта крошечная разница для завершения моего проекта, поэтому, если у кого-то есть решение, это было бы изумительно.

Вот пример кода для ответа на вопрос (не беспокойтесь о типах, они просто случайны):


//Mother class
@Entity
@Table(name = "MYTABLE")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="MY_COL_A", discriminatorType = DiscriminatorType.STRING)
public abstract class Mother implements Serializable {

    private static final long serialVersionUID = 1L;
    private String id, year;

    @Id
    @Column(name = "IDA")
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @Id
    @Column(name = "MY_YEAR")
    public String getYear() {
        return year;
    }

    public void setYear(String year) {
        this.year = year;
    }
}

//Daughter class
@Entity(name="Sub")
@DiscriminatorValue("MY_VALUE")
public class Sub extends Mother implements Serializable {

    private static final long serialVersionUID = 1.1L;

    // What I would like to have
    private String creationYear;

    // code here to link creationYear to Mother.year 
    // so it is the same value at the end but with different name
}

Спасибо за помощь!

РЕДАКТИРОВАТЬ: Этот вопрос отличается от Этот вопрос , поскольку в этом вопросе программист должен иметь одинаковый идентификатор значения, указывающий на два разных столбца, в случае если идентификатор автомобиля указывает на столбец car_id и в случае мотоцикла идентификатор указывает на motorcycle_id.

Моя проблема заключается в том, чтобы в каждом классе было два поля с разными именами, указывающими на один и тот же столбец в базе данных,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...