在我目前的应用程序中,我有一个服务,它使用saxparser来读取一些xml。在saxparser中,我尝试将新对象存储到数据库中,但是我收到以下错误:
ERROR util.JDBCExceptionReporter - Connection is read-only. Queries leading to data modification are not allowed
我的服务如下:
@Transactional
class SchedulingService {
def printIets() {
LessonParser par = new LessonParser()
print "de service macheert ier e trut"
par.parse(["src/data/tweede/"])
}
}
解析器:
class LessonParser {
public void parse(baseFileLocations){
....
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
LessonHandler handler = new LessonHandler()
saxParser.parse(is, handler);
...
}
}
最后,尝试将某些内容保存到数据库中的处理程序
class LessonHandler extends DefaultHandler{
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
if (qName.equalsIgnoreCase("TTSession")) {
//voorlopig enkel hoorcolleges
if (parse && this.courseType == CourseType.HC) {
Course course = new Course (name:this.name , info:this.info,courseType:this.courseType,creator:this.creator)
course.save()
}
}
}
}
当我尝试在上述处理程序中保存课程时发生错误。 我也在使用mysql数据库
答案 0 :(得分:2)
我已将服务连接到一个安静的api,我在那里忘记了@transactional定义。添加它就可以了解
答案 1 :(得分:0)
感谢分享。
该服务获得了“@Transactional(readOnly = true)”定义。因此所有方法都是只读的。
如果您想进行一些修改,则需要在方法之前添加“@Transactional”。