我正在使用下面的网络应用程序堆栈,当我运行我的TestNG测试并且容器被初始化时,我的测试类无法使用以下异常自动装配ExampleRepository。关于如何映射这种关系的任何想法?当我使用相同的Web应用程序启动jetty Web服务器时,我没有获得任何启动异常,因此它可能是AbstractTransactionalTestNGSpringContextTests的问题。
堆栈:
Spring - 3.2.2.RELEASE
Spring Data - 1.3.0.RELEASE
Hibernate - 3.6.10.Final
TestNG - 6.1.1
例外:
Cannot instantiate abstract class or interface: com.test.Example; nested exception is org.hibernate.InstantiationException
JPA实体:
@Entity
@Table(name = "EXAMPLE")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
public abstract class Example {}
@Entity
@DiscriminatorValue("examplea")
public class ExampleA extends Example {}
@Entity
@DiscriminatorValue("exampleb")
public class ExampleB extends Example {}
存储库:
public interface ExampleRepository extends JpaRepository<Example, Long> {}
TestNG课程:
public class ExampleTest extends AbstractTransactionalTestNGSpringContextTests{
@Autowired
private ExampleRepository exampleRepository;
}
答案 0 :(得分:1)
将Example类设为Interface,让其他类实现它。 正如异常明确指出的那样,你无法实例化一个抽象类。 将Example类作为接口可以实例化其类型,即实现它的类。