我知道spring数据存储库的实现:
创建一个这样的界面:
public interface CountryRepository extends CrudRepository<Country, Long> {}
Run Code Online (Sandbox Code Playgroud)
现在Country是一个AbstractCatalog,我在矿山项目中有很多(很多)目录.
我想知道我是否可以创建一个适用于所有目录的存储库:
public interface AbstractCatalogRepository extends CrudRepository<AbstractCatalog, Long> {}
Run Code Online (Sandbox Code Playgroud)
现在有了保存,我没有直接看到一个问题,但如果我想搜索一个AbstractCatalog我已经确定我会碰壁,因为回购将不知道他必须选择什么对象.
@MappedSuperclass
public abstract class AbstractCatalog extends PersistentEntity {
/**
* The Constant serialVersionUID.
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
/**
* The code.
*/
@Column(unique = true, nullable = false, updatable = false)
private String code;
/**
* The description.
*/
@Column(nullable = false)
private …Run Code Online (Sandbox Code Playgroud) 鉴于以下课程:
@MappedSuperclass
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
@DiscriminatorColumn(name="animalType",discriminatorType=DiscriminatorType.STRING)
@QueryExclude
public abstract class Animal {}
@Entity
@DiscriminatorValue("dog")
public class Dog {}
@Entity
@DiscriminatorValue("cat")
public class Cat {}
Run Code Online (Sandbox Code Playgroud)
有可能以某种方式配置JPA存储库Animal吗?
我试过了
public interface AnimalRepository extends JpaRepository<Animal,Long>
Run Code Online (Sandbox Code Playgroud)
然而,这失败了:
java.lang.IllegalArgumentException:不是托管类型:Animal
有没有办法配置这个?
我希望能够执行以下任务:
@Autowired
private AnimalRepository repository;
public void doSomething()
{
Animal animal = repository.findById(123);
animal.speak();
}
Run Code Online (Sandbox Code Playgroud)