как не сохранять объект jpa?

#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)
}
  

проблема в том, что я хочу получить базу данных, разработанную так, как упоминалось ранее, поэтому есть два решения:

  1. не сохраняйте объект person в моем методе loadTeacher, потому что таблица person будет автоматически заполнена, когда я создам объект Teacher
  2. сохраняйте объект person, но сумейте сохранить один и тот же PersonID как в созданном объекте person, так и в результирующем объекте teacher

Я не знаю, как сделать и то, и другое: / спасибо за вашу помощь и надеюсь, что я был ясен в своем объяснении проблемы

Комментарии:

1. Я дважды прочитал ваш вопрос и не понял, в чем проблема и чего вы пытаетесь достичь. Не могли бы вы объяснить это немного яснее?

2. меня можно разделить на два вопроса: — как не сохранять объект (например, я не хочу сохранять объект person) -как объект teacher может иметь тот же PersonID, что и объект person в таблице, зная, что объект teacher был создан из объекта person

3. вам просто нужно установить идентификатор сохраняющегося объекта и в целом, чтобы определить пользовательскую логику и иметь полный контроль над тем, что в какую таблицу попадает, используйте Spring JDBC вместо JPA.

4. но его идентификатор сгенерирован автоматически , не так ли ?

5. да, это так, именно так работает наследование классов