Tôi có một ứng dụng sử dụng Spring with Hibernate trên cơ sở dữ liệu MySQL. Đối với một số lý do, tính đến vài ngày qua, bất cứ lúc nào tôi cố gắng để tồn tại bất kỳ đối tượng cơ sở dữ liệu của tôi Tôi nhận được lỗi sau:Tại sao kết nối MySQL Hibernate này chỉ đọc?
java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed.*
tôi có thể không cho cuộc sống của tôi ra tại sao điều này đang xảy ra . Ứng dụng của tôi đã hoạt động tốt cách đây vài ngày.
Tôi cấu hình một đối tượng SessionFactory trong tập tin applicationContext.xml của tôi như thế này:
<bean id="sessionFactory" lass="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="configLocation"
value="classpath:/hibernate.cfg.xml"/>
<property name="packagesToScan">
<list>
<value>com.domain.domainObjects</value>
</list>
</property>
</bean>
tập tin hibernate.cfg.xml của tôi trông như thế này:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://{url to db}:3306/{db name}</property>
<property name="connection.username">{db user}</property>
<property name="connection.password">{db password}</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">10</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- Enable Hibernate's automatic session context management >
<property name="current_session_context_class">thread</property-->
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>
Tôi đang sử dụng mysql/j conenction phiên bản 5.1, phiên bản hibernate 3.2, spring mvc 3.0.5
Cấu hình có vẻ tốt. Xin vui lòng, cũng thêm một mã mẫu bị ảnh hưởng bởi điều này. Ngoài ra, nó sẽ là tốt đẹp nếu bạn có thể chỉ định phiên bản chính xác của trình điều khiển MySQL. – jpkrohling
Bạn có đang sử dụng chú thích Giao dịch không? Nó được đặt thành @Transactional (readOnly = true) –
Sau khoảng 3 giờ gỡ lỗi khủng khiếp, tôi biết điều gì đang diễn ra. Tôi có một phương pháp cấp dịch vụ mà tôi cũng có lời khuyên "xung quanh". Phương thức mức dịch vụ được chú thích bằng @Transactional (readOnly = true), tuy nhiên, tôi có một dịch vụ khác trong lời khuyên của tôi đã được chú thích bằng @Transactional (readOnly = false). Khía cạnh của tôi (hoặc lời khuyên) đang sử dụng các đối tượng DAO giống như lớp dịch vụ thông thường của tôi, vì vậy khi tôi gọi sessionFactory.getCurrenctSession() nó cho tôi trở lại phiên đã được tạo cho phương thức mức dịch vụ chỉ đọc của tôi. Bây giờ, tôi phải tái kiến trúc. Cảm ơn bạn đã trả lời! –