2012-05-16 1 views
0

У меня есть веб-проект, в котором я использую OpenJAP для подключения к базе данных. Я настроил persistence.xml, и я могу подключиться к базе данных и получить данные. Но на выходе консоли я вижу эту записьOpenJPA выполняет подготовленный оператор, когда в проекте не существует

1953 OpenJPA TRACE [main] openjpa.jdbc.SQL - <t 31156635, conn 6888942> executing prepstmnt 9690924 

UPDATE student 
    SET scourse = ?, sname = ?, sroll = ? 
    WHERE id = ? 
[params=?, ?, ?, ?] 

В целом мой проект до сих пор я не добавил подготовленное заявление или любого оператора обновления. Я хочу знать, почему OpenJPA выполняет это утверждение и что будет результатом производительности, когда я получаю большие данные в диапазоне миллионов?

+0

Возможно, проект ссылается на какой-либо файл конфигурации где-то в файловой системе? Как вы искали вышеуказанное заявление в своем проекте? возможно, искать всю машину. Кроме того, если это возможно, отладка даст представление о том, где говорится об обновлении от – Victor

+0

Нет инструкции там нет. Заявление изменяется на основе таблицы, к которой обращается значение, означающее, что таблица является «учеником», она выполняет вышеупомянутый оператор else, если таблица «пользователь» выполняет оператор обновления с столбцами таблицы «пользователь». Это очень известная проблема в OpenJPA. Это связано с улучшением файлов классов объектов данных. Я пробую несколько вещей, когда это будет сделано, и он работает, тогда я отправлю ответ. – Natraj

+0

Большое спасибо. – Victor

ответ

0

Я добавил следующий код в мой build.xml файл

<!-- ***************************************************************************************************************** --> 
<!-- DO NOT DELETE FOLLOWING CODE. THIS IS ADDED FOR ENCHANCING THE CLASSES AT COMPILE TIME. IT IS REQUIRED BY OPENJPA --> 
<!-- Define the classpath to include the necessary files. --> 
<!-- ex. openjpa jars, persistence.xml, orm.xml, and target classes --> 
<path id="jpa.enhancement.classpath"> 
    <!-- Assuming persistence.xml/orm.xml are in WebContent/WEB-INF/classes/META-INF --> 
    <pathelement location="WebContent/WEB-INF/classes" /> 

    <!-- Location of the .class files --> 
    <pathelement location="build/classes" /> 

    <!-- Add the openjpa jars --> 
    <fileset dir="."> 
     <include name="**/lib/*.jar" /> 
    </fileset> 
</path> 
<!-- define the openjpac task; this can be done at the top of the --> 
<!-- build.xml file, so it will be available for all targets --> 
<taskdef name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask" classpathref="jpa.enhancement.classpath" /> 

<!-- invoke enhancer on all .class files below the model directory --> 
<openjpac> 
    <classpath refid="jpa.enhancement.classpath" /> 
    <fileset dir="."> 
     <include name="**/model/*.class" /> 
    </fileset> 
</openjpac> 
<echo message="Enhancement complete" /> 
<!-- ***************************************************************************************************************** --> 

При добавлении этого и установке затмения использовать этот файл build.xml для создания файла WAR. Объекты расширяются, и я не получаю «Выполнение подготовленного оператора» Trace в моем журнале и не выполняет дополнительный оператор «Обновление».