我正在使用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对象中的人匹配。
有没有人有可行的解决方案?谢谢你的帮助。