org.apache.ibatis.exceptions.PersistenceException:更新数据库时出错

时间:2019-08-16 03:11:51

标签: oracle ejb weblogic sql-insert mybatis

我正在尝试使用mybatis将单个记录插入表中,但是遇到java.sql.SQLSyntaxErrorException:ORA-00933:SQL命令未正确结束

dto:

import boto3

boto3.setup_default_session(profile_name='my_profile')
client = boto3.client('s3')
# get list of buckets this iam role can see
buckets = client.list_buckets()['Buckets']

# iterate through list of buckets looking at tags
matching_buckets = []
# tag key and value to search for
tag_key = 'app'
tag_value = 'application1'

for idx, bucket in enumerate(buckets):
#comment out following line if you don't want to see the progress
#print(f'{idx+1} of {len(buckets)} - {bucket["Name"]}')
try:
    tags = client.get_bucket_tagging(Bucket=bucket['Name'])['TagSet']
except client.exceptions.ClientError:
    continue
# iterate through tags looking for specific key
for tag in tags:
    if tag['Key'] == tag_key and tag['Value'] == tag_value:
        matching_buckets.append(bucket['Name'])

print("buckets belonging to", tag_value, "are: ", matching_buckets)

mybatis-mapper.xml:

public class ClientApplications {
private Integer clientId;
private String appName;
private String appAcctName;
private String cid; 
public Integer getClientId() {
    return clientId;
}
public void setClientId(Integer clientId) {
    this.clientId = clientId;
}
public String getAppName() {
    return appName;
}
public void setAppName(String appName) {
    this.appName = appName;
}
public String getAppAcctName() {
    return appAcctName;
}
public void setAppAcctName(String appAcctName) {
    this.appAcctName = appAcctName;
}
public String getCid() {
    return cid;
}
public void setCid(String cid) {
    this.cid = cid;
}       
}

mybatis-config.xml:

<insert id="insertClientApplications"
    parameterType="ClientApplications" useGeneratedKeys="false">
    insert
    into client_applications (client_id, app_name,
    app_acct_name, cid, start_date, created_by,
    eca_created_date, updated_by, updated_date) values
    (#{clientId}, #{appName}, #{appAcctName}, #{cid}, trunc(sysdate),
    'cltSvc', sysdate, 'cltSvc', sysdate);
</insert>

这是我设置参数并调用insert方法的方式:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>      
<typeAliases>        
    <typeAlias alias="ClientApplications" type="com.xyz.dto.ClientApplications"/>
</typeAliases>

<plugins>
    <plugin interceptor="com.xyz.dao.mybatis_3_2_8.MybatisLoggingInterceptor"/>         
</plugins>  
<environments default="default">
    <environment id="default">
    <transactionManager type="MANAGED"/>            
        <dataSource type="JNDI">
            <property name="data_source" value="jdbc/client-svc"/>
        </dataSource>
    </environment>
</environments>
<mappers>
    <mapper resource="mybatis-mapper.xml"/> 
</mappers>  
</configuration>

org.apache.ibatis.exceptions.PersistenceException:

更新数据库时出错。原因:java.sql.SQLSyntaxErrorException:ORA-00933:SQL命令未正确结束

该错误可能涉及com.xyz.insertClientApplications-Inline

设置参数时发生错误

SQL:插入到client_applications(client_id,app_name,app_acct_name,cid,start_date,created_by,created_date,updated_by,updated_date)值(?,?,?,?,trunc(sysdate),'cltSvc',sysdate,'cltSvc ',sysdate);

原因:java.sql.SQLSyntaxErrorException:ORA-00933:SQL命令未正确结束

ClientApplications cltApps = new ClientApplications(1214114, 'CA', '1231111', '1423423SSD'); 
mapper.insertClientApplications(cltApps);

由以下原因引起:java.sql.SQLSyntaxErrorException:ORA-00933:SQL命令未正确结束

at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:200)
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:185)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.ibatis.session.SqlSessionManager$SqlSessionInterceptor.invoke(SqlSessionManager.java:357)
at com.sun.proxy.$Proxy335.insert(Unknown Source)
at org.apache.ibatis.session.SqlSessionManager.insert(SqlSessionManager.java:236)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:57)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
at com.sun.proxy.$Proxy337.insertEntClientApplications(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mybatis.cdi.SerializableMapperProxy.invoke(SerializableMapperProxy.java:56)
at com.sun.proxy.$Proxy337.insertClientApplications(Unknown Source)
at com.xyz.AddRelationships.determineAppAcctId(AddRelationships.java:193)
at com.xyz.AddRelationships.addRelationships(AddRelationships.java:72)
at com.xyz.ProcessAddRelationships.run(ProcessAddRelationships.java:15)
at com.xyz.UniqueProcessor.process(UniqueProcessor.java:45)
at com.xyz.UniqueProcessor$Proxy$_$$_WeldClientProxy.process(Unknown Source)
at com.xyz.Poller.checkEip(Poller.java:97)
at com.xyz.Poller.timerTimeout(Poller.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.oracle.pitchfork.inject.Jsr250Metadata.invokeTimeoutMethodInternal(Jsr250Metadata.java:373)
at com.oracle.pitchfork.intercept.LifecycleEventCallbackInvocationContext.proceed(LifecycleEventCallbackInvocationContext.java:126)
at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:73)
at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)
at sun.reflect.GeneratedMethodAccessor179.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.oracle.pitchfork.inject.Jsr250Metadata.invokeLifecycleMethod(Jsr250Metadata.java:388)
at com.oracle.pitchfork.intercept.LifecycleEventCallbackInvocationContext.proceed(LifecycleEventCallbackInvocationContext.java:121)
at com.oracle.pitchfork.intercept.LifecycleEventCallbackInvocationContext.proceed(LifecycleEventCallbackInvocationContext.java:150)
at com.oracle.pitchfork.intercept.InterceptionMetadata.invokeTimeoutMethod(InterceptionMetadata.java:626)
at weblogic.ejb.container.injection.EjbComponentCreatorImpl.invokeTimer(EjbComponentCreatorImpl.java:71)
at weblogic.ejb.container.injection.InjectionBasedEjbComponentCreator.invokeTimer(InjectionBasedEjbComponentCreator.java:185)
at weblogic.ejb.container.manager.BaseEJBManager.invokeTimeoutMethod(BaseEJBManager.java:199)
at weblogic.ejb.container.timer.TimerImpl.timerExpired(TimerImpl.java:338)
at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:290)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:666)
at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:406)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)

0 个答案:

没有答案