Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HibernateCursorItemReader,多个实体映射到同一个表时出现问题,是否可能?_Hibernate_Spring Batch - Fatal编程技术网

HibernateCursorItemReader,多个实体映射到同一个表时出现问题,是否可能?

HibernateCursorItemReader,多个实体映射到同一个表时出现问题,是否可能?,hibernate,spring-batch,Hibernate,Spring Batch,我有3个类映射到同一个表。这是现有的代码 <class name="com.blah.PersonRaw" table="Person" entity-name="PersonBasicRaw" mutable="false"> .... (contains some mappings) <class name="com.blah.PersonRaw" table="Person" entity-name="PersonRaw" mutable="false">.

我有3个类映射到同一个表。这是现有的代码

<class name="com.blah.PersonRaw" table="Person" entity-name="PersonBasicRaw"   mutable="false">  ....  (contains some mappings)
<class name="com.blah.PersonRaw" table="Person" entity-name="PersonRaw" mutable="false">.....         (Just basic object ,with no mappings)
<class name="com.blah.Person" table="Person" entity-name="Person">......                               (Full mapping)
。。。。(包含一些映射)
.....         (只有基本对象,没有映射)
......                               (完整映射)
现在,如果我在读卡器和处理器中都使用Person(第三个),而不是personRaw,那么我的工作运行良好。但如果我使用personRaw,我会出错。我没有得到太多关于什么是错误以及为什么会抛出的信息

我在处理器中添加了一个before步骤,我的作业一直执行到before步骤

这是日志

<!    
Before Step Called:
Hibernate: select persona0_.person as person1_70_ .....from person persona0_
ERROR [main] (AbstractStep.java:225) - Encountered an error executing step stepR2 in    job generateDepositPremiumJob
java.lang.NoSuchMethodError: org.springframework.classify.BinaryExceptionClassifier.classify(Ljava/lang/Throwable;)Ljava/lang/Boolean;
at org.springframework.batch.core.step.item.SimpleRetryExceptionHandler.handleException(SimpleRetryExceptionHandler.java:81)
at org.springframework.batch.repeat.support.RepeatTemplate.doHandle(RepeatTemplate.java:294)
at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:220)
at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:144)
at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:253)
at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:198)
at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:148)
at org.springframework.batch.core.job.flow.JobFlowExecutor.executeStep(JobFlowExecutor.java:64)
at org.springframework.batch.core.job.flow.support.state.StepState.handle(StepState.java:67)
at org.springframework.batch.core.job.flow.support.SimpleFlow.resume(SimpleFlow.java:162)
at org.springframework.batch.core.job.flow.support.SimpleFlow.start(SimpleFlow.java:141)
at org.springframework.batch.core.job.flow.FlowJob.doExecute(FlowJob.java:134)
at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:304)
at org.springframework.batch.core.launch.support.SimpleJobLauncher$1.run(SimpleJobLauncher.java:135)
at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50)
at org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:128)
at com.reinsurance.urs.batch.functionaltest.BatchJobTest.testExecute(BatchJobTest.java:71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:232)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:175)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

这里是myjobs.xml

<job id="generatePersonDetails"restartable="false"      xmlns="http://www.springframework.org/schema/batch">
    <step id="stepR2">
        <tasklet>
            <chunk reader="generatepersonReader" processor="generatePersonProcessor"
                writer="generatePersonWriter" skip-limit="5" commit-interval="20">
                <skippable-exception-classes>
                    <include class="java.lang.RuntimeException" />
                </skippable-exception-classes>
            </chunk>
        </tasklet>
    </step>
</job>
<bean id="generatePersonReader"
    class="org.springframework.batch.item.database.HibernateCursorItemReader">
    <property name="queryString" value="from PersonRaw"/>
    <property name="sessionFactory" ref="mySessionFactory" />
</bean>

这是我的处理器

@Component("generatePersonProcessor")
public class GeneratePersonProcessor extends StepExecutionListenerSupport implements ItemProcessor<PersonRaw, PersonRaw> {

public void beforeStep(StepExecution stepExecution) {
    System.out.println("Before Step Called:");

    this.stepExecution = stepExecution;
}

@Override
public PersonRaw process(PersonRaw person) throws Exception {

    System.out.println("in Processing");


    return person;
}
@组件(“generatePersonProcessor”)
公共类GeneratePersonProcessor扩展了StepExecutionListenerSupport实现了ItemProcessor{
预处理前的公共无效(步骤执行步骤执行){
System.out.println(“调用的步骤之前:”);
this.stepExecution=stepExecution;
}
@凌驾
公共PersonRaw进程(PersonRaw person)引发异常{
System.out.println(“处理中”);
返回人;
}
}

我不明白它为什么会失败。
我使用的是stacktrace中的SpringBatch 3.0和Hibernate 4.x以及sql server 2012,您的依赖项中缺少spring retry库(
BinaryExceptionClassifier
是retry库的一部分)。

检查您的类路径。

我的依赖项中有spring\u retry。如果我使用Person对象,它正在工作。但是如果我使用personRaw,我会得到这个错误。所以我的问题是为什么personRaw会失败?