#java #mysql #spring #jpa #spring-data-jpa
#java #mysql #spring #jpa #spring-data-jpa
Вопрос:
У меня есть две базы данных mysql, первая большая, со многими таблицами, и в настоящее время я пишу Java-код для извлечения некоторых простых данных из этой большой базы данных и размещения их во второй базе данных, разработанной мной самостоятельно, вот так (3 таблицы: person, teacher и student):
|personID|firstname|lastname|
| - | - | - |
| - | - | - |
|personID|Subject|Salary|
| - | - | - |
| - | - | - |
|personID|Score|
| - | - |
итак, у меня есть 3 объекта (по одному для каждой таблицы)
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Person {
@Id
@GeneratedValue( strategy = GenerationType.AUTO )
private Long personID;
private String firstname;
private String lastname;
}
@Entity
@PrimaryKeyJoinColumn(referencedColumnName="personID")
public class Teacher extends Person{
private String subject;
private String salary;
}
@Entity
@PrimaryKeyJoinColumn(referencedColumnName="personID")
public class Student extends Person{
private int score;
}
итак, в принципе, у меня есть метод loadTeacher (длинный fk), который принимает foreignkey в качестве параметра, извлекает первую базу данных и сохраняет teacher, соответствующий этому fk.
он разветвляется следующим образом :
laodTeacher(long fk) {
-with this fk retrieve the firstname and lastname ,and create a Person Object (called person)
-with this fk retrieve the subject and Salary
-create teacher object : new Teacher(person.getFirstname,person.getLastname,subject,salary)
}
проблема в том, что я хочу получить базу данных, разработанную так, как упоминалось ранее, поэтому есть два решения:
- не сохраняйте объект person в моем методе loadTeacher, потому что таблица person будет автоматически заполнена, когда я создам объект Teacher
- сохраняйте объект person, но сумейте сохранить один и тот же PersonID как в созданном объекте person, так и в результирующем объекте teacher
Я не знаю, как сделать и то, и другое: / спасибо за вашу помощь и надеюсь, что я был ясен в своем объяснении проблемы
Комментарии:
1. Я дважды прочитал ваш вопрос и не понял, в чем проблема и чего вы пытаетесь достичь. Не могли бы вы объяснить это немного яснее?
2. меня можно разделить на два вопроса: — как не сохранять объект (например, я не хочу сохранять объект person) -как объект teacher может иметь тот же PersonID, что и объект person в таблице, зная, что объект teacher был создан из объекта person
3. вам просто нужно установить идентификатор сохраняющегося объекта и в целом, чтобы определить пользовательскую логику и иметь полный контроль над тем, что в какую таблицу попадает, используйте Spring JDBC вместо JPA.
4. но его идентификатор сгенерирован автоматически , не так ли ?
5. да, это так, именно так работает наследование классов