我试过下面的代码:
public class Abc {
private ArrayDescriptor arrayDesc;
void init() {
connection = //create connection
arrayDesc = ArrayDescriptor.createDescriptor("DBTYPE",connection);
}
void m1() {
conn1 = //create connection
ARRAY array_to_pass1 = new ARRAY( arrayDesc , conn1, idsArray1 );
}
void m2() {
conn2 = //create connection
ARRAY array_to_pass2 = new ARRAY( arrayDesc , conn2, idsArray2 );
}
}
Run Code Online (Sandbox Code Playgroud)
此代码给出以下错误:
table.java.sql.SQLException:oracle.sql.DatumWithConnection.assertNotNull(DatumWithConnection.java:103)中缺少描述符
怎么解决这个问题?
我的应用程序使用休眠及其打印的日志记录。我尝试将日志记录设置为错误级别,如下所示。但是,它不会将休眠日志记录设置为错误级别。这里有什么遗漏吗?
pom.xml :
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jul</artifactId>
<version>2.11.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout
pattern="[%d{dd MMM yyyy HH:mm:ss}] [%-5p] [%t] [%C{1}:%M:%L] - %m%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="com.myapp" level="error" additivity="false">
<AppenderRef ref="CONSOLE" />
</Logger>
<Root level="info">
<appender-ref ref="CONSOLE" />
</Root>
<Logger name="org.hibernate" level="error" additivity="false">
<AppenderRef ref="CONSOLE" />
</Logger>
</Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)
使用的休眠和弹簧版本:
<spring-framework.version>4.0.3.RELEASE</spring-framework.version>
<hibernate.version>3.6.9.Final</hibernate.version>
Run Code Online (Sandbox Code Playgroud)
记录其打印
19:05:16.733 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.hql.ast.ErrorCounter …Run Code Online (Sandbox Code Playgroud) 我必须从一个文件中读取 ids 并在第二个 xml 文件中搜索它,如果找到则将整行写入第三个文件。文件 1 为 111 MB,文件 2 为 40 GB
文件1.xml
id1
id2
id5
Run Code Online (Sandbox Code Playgroud)
文件2.xml
<employees>
<employee><id>id1</id><name>test1</name></employee>
<employee><id>id2</id><name>test2</name></employee>
<employee><id>id3</id><name>test3</name></employee>
<employee><id>id4</id><name>test4</name></employee>
<employee><id>id5</id><name>test5</name></employee>
<employee><id>id6</id><name>test6</name></employee>
</employees>
Run Code Online (Sandbox Code Playgroud)
File3.xml:结果
<employee><id>id1</id><name>test1</name></employee>
<employee><id>id2</id><name>test2</name></employee>
<employee><id>id5</id><name>test5</name></employee>
Run Code Online (Sandbox Code Playgroud)
我用 grep 试过了
grep -i -f file1.xml file2.xml >> file3.xml
Run Code Online (Sandbox Code Playgroud)
但它给出了内存耗尽错误。
我用循环和 awk 命令尝试的另一种方法。
#while read -r id;do
#awk -v pat="$id" '$0~pat' file2.xml >> file3.xml
#done < file1.xml
Run Code Online (Sandbox Code Playgroud)
它也花费了太多时间。对此最好的解决方案是什么?