Im имеющий суперкласс как следующее:Изменить значение абстрактного класса в абстрактном хранилище
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected long id = "";
protected String firstname = "";
protected String lastname = "";
protected Address address = null;
// getter setter
Как вы можете видеть, им с помощью TABLE_PER_CLASS
анс в InheritanceType
, и я хочу, чтобы это так.
Теперь я получил два подкласса унаследовав от Base
@Entity
public class Consulter extends Base {
// other fields
}
@Entity
public class Customer extends Base {
// other fields
}
Когда я теперь создать хранилище вроде следующего:
public interface Base_Repository extends JpaRepository<Base, Long> {
}
Will JPA быть в состоянии вернуть правильный объект из базы данных, когда я указать идентификатор конкретного типа? Так что-то вроде этого?
long id = 222;
Customer customer = customerRepository.findeOne(id);
Base base = baseRepository.findeOne(id);
boolean equals = customer.equals(((Customer) base));
А также можно было бы сделать что-то подобное?
Address address = new Address();
address.setStreet("space street 42");
address.setCountry("Trump Nation");
addressRepository.save(address);
Base base = baseRepository.findeOne(222);
base.setAddress(address);
baseRepository.save(base);
Будет ли это работать или разве это невозможно?
ОК спасибо за этот ответ сэр. – Mulgard