Hibernate Spring存储库继承向实体添加更多细节

时间:2018-04-03 10:07:29

标签: spring hibernate inheritance

我正在使用hibernate和spring存储库。我有2个类Person和PersonDetails,其中包含有关此人的更多详细信息。

@Entity
@Table(name = "person")
@Inheritance(strategy = InheritanceType.JOINED)
public class Person{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    protected Long id;
    //name,birthdate ...

}
@Entity
@Table(name = "person_details")
@PrimaryKeyJoinColumn(name="id")
public class PersonDetails extends Person{
// private details accessible only for authorized user
}

当我创建一个Person时,我无法关联PersonDetails,它会自动创建一个PersonDetails的新实例,并在Person表中添加一个新行。 这是我的存储库。

@NoRepositoryBean
public interface PersonBaseRepository<T extends Person> extends JpaRepository<T, Long> {
T findByNameAndFirstname(String name,String firstname);
}
@Transactional
public interface PersonRepository extends PersonBaseRepository<Person> {
}
@Transactional
public interface PersonDetailsRepository extends PersonBaseRepository<PersonDetails > {
}

要解决此问题,我可以仅使用PersonDetails实现我的实体,但在某些情况下,PersonDetails字段将为空。

当我从PersonDetailsRepository调用findByNameAndFirstname并且该人员不在person_details表中时,但我只想亲自返回PersonDetails对象中的人匹配。

有没有人有可行的解决方案?谢谢你的帮助。

0 个答案:

没有答案