У меня странная проблема с пружинными данными и наследованием, у меня есть два класса:
@Getter
@Setter
@Entity
@Table(name = "a")
@Inheritance(strategy = InheritanceType.JOINED)
public class A {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "a_id_gen")
@SequenceGenerator(name = "a_id_gen", sequenceName = "a_id_seq", allocationSize = 50)
@Column(name = "id")
private Long id;
}
И класс B
@Getter
@Setter
@Entity
@Table(name = "b")
public class B extends A {
@ManyToOne
@JoinColumn(name = "subject")
private Subject subject;
}
Также у меня есть два простых интерфейса, которые расширяют JpaRepo следующим образом:
public interface ARepository extends JpaRepository<A, Long>
public interface BRepository extends JpaRepository<B, Long>
И затем в коде в @Transactional я использую его так:
A a = ARepository.findOne(someId);
if (some checks here) {
B b = BRepository.findOne(a.getId());
}
И проблема в том, что B здесь NULL, однако в БД в таблице b она существует стот же идентификатор на 100% уверен.Если в отладке я пишу
BRepository.getOne(a.getId());
, он возвращает экземпляр A, тот же экземпляр A, что и выше, из ARepository.
Как я могу заставить эту работу работать так, как мне нужно?Я думаю, что проблема в каком-то спящем управляемом кеше или чем-то подобном.Я также попытался изменить equals и hashcode, как в этом примере http://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#identifiers-composite-associations но не повезло, проблема все еще существует.
Версия Hibernate: 5.0.12. Загрузочные зависимости окончательной версии Spring: 1.5.6.RELEASE