org.springframework.data.jpa.domain.support.AuditingEntityListener
Auditing: 審計;查賬
Hades:Hades是一個開源庫,基於JPA和Spring構建,通過減少開發工作量顯著的改進了數據訪問層的實現。
在系統中記錄實體類的創建者、修改者和相關日期等信息是一個很常見的需求。Hades提供了監聽器EntityListener,可以幫你透明的實現這些功能。要啟用Hades的審計功能,只需要在orm.xml文件中定義AuditingEntityListener即可:
org.hibernate.tool.hbm2ddl.SchemaUpdate: 201 - HHH000319: Could not get database metadata
nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
java.sql.SQLException: No suitable driver 沒有合適的驅動
nested:嵌套 內裝
java.lang.IllegalArgumentException:不合法的參數異常
{
@Entity
@NamedQuery(name = "User.findByTheUsersName", query = "from User u where u.username = ?1")
public class User extends AbstractPersistable<Long>
}
<property name="persistenceUnitName" value="jpa.sample"/> 屬性
持久化單元名稱
“persistenceUnitName”屬性,添加“packagesToScan”屬性
可以用上面的代替
都去掉后報錯:“Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [META-INF/hibernate-context.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: No persistence units parsed from {classpath*:META-INF/persistence.xml}”
這兩個屬性貌似任選其一
配置:
<property name="packagesToScan" value="org.springframework.data.jpa.example.repository.simple.*" />
結果:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'simpleUserRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not an managed type: class org.springframework.data.jpa.example.repository.simple.User
配置:
<property name="packagesToScan" value="org.springframework.data.jpa.example.repository.simple" />
結果:
org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Could not open connection
--------------
利用hibernate中的SchemaExport生成數據表
org.hibernate.tool.hbm2ddl.SchemaExport: 385 - HHH000231: Schema export unsuccessful
徹底解決了:
哈哈,問題解決了,為了方便以后遇到這個問題的童鞋們,我還是說下解決方法。
其實是驅動包過時了。
很多人一直都是用的mysql-connector-java-5.0.8.jar這個驅動包,然而hibernate4需要更新的mysql驅動包,現在最新的驅動包是5.1.19,但是在mysql官方任然是5.0.8,需要點擊最新版本才能看見5.1.19那個mysql驅動。至於什么方言 MySQL5Dialect ,我看了hibernate4.1.2的devgaide,里面說的根本就不是那么一會事兒,MySQLDialect在hibernate4.1.2里面仍然可以使用哈。
org.hibernate.exception.JDBCConnectionException:
數據庫未能獲得連接
1.檢查你的數據庫地址:
2.檢查用戶名:
key="user">
3.檢查密碼:
key="password">
然后嘗試用配置里面的數據連接數據庫,看是否正確
如果不正確,看是不是寫錯了,或者數據庫服務未啟動。
----------------
org.hibernate.tool.hbm2ddl.SchemaUpdate: Could not complete schema update
其實這個hibernate.hbm2ddl.auto參數的作用主要用於:自動創建|更新|驗證數據庫表結構。如果不是此方面的需求建議set value="none"。
Could not get database metadata
Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Could not open connection
1. org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is java.lang.UnsupportedOperationException: Not supported by BasicDataSource
Spring不能為JAP創建事務。原因是bean.xml設定了數據源persistence.xml中要把數據庫連接去掉
<property name="hibernate.connection.username" value="xxx"/>
<property name="hibernate.connection.password" value="xxx"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/xxx? useUnicode=true&characterEncoding=UTF-8"/>
2. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'productServiceBean': Injection of persistence fields failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [beans.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: org.hibernate.MappingException: Could not determine type for: java.util.Set, for columns: [org.hibernate.mapping.Column(childtypes)]
原因:@Id @GeneratedValue(strategy = GenerationType.AUTO)
這個注解寫在get方法上不要寫在屬性聲明上。
3. javax.persistence.PersistenceException: org.hibernate.exception.DataException: could not insert: [com.yufei.bean.product.ProductType]
Caused by: java.sql.SQLException: Data too long for column 'visible' at row 1
原因:實體類字段中的visible插入到數據庫中所對應的值為ASCII碼味49,超出范圍。
換個mysql的jar包解決問題。
4. web容器出現
嚴重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
此問題多樣化,查閱資料說是jar包commons-logging.jar問題 ,但解決的方式是重新導入項目...
5. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'productTypeService': Injection of persistence fields failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [beans.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
原因: Spring2.5下asm-2.2.3.jar 與hibernate下的asm.jar 沖突, 刪除asm-2.2.3.jar 。
6. Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlCoreTLV
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:88)
org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:340)
原因:lib中缺少standard.jar , jstl.jar
7. java.lang.NoSuchFieldError: DIRECTORY
at net.fckeditor.connector.impl.AbstractLocalFileSystemConnector.getFolders(AbstractLocalFileSystemConnector.java:140)
at net.fckeditor.connector.Dispatcher.getFoldersAndOrFiles(Dispatcher.java:204)
at net.fckeditor.connector.Dispatcher.doGet(Dispatcher.java:156)
at net.fckeditor.connector.ConnectorServlet.doGet(ConnectorServlet.java:89)
原因:包沖突,刪掉struts1.3自帶的commons-io-1.1.jar,commons-fileupload-1.1.1.jar,加入commons-io-1.3.2.jar,commons-fileupload-1.2.1.jar
8.IOException while loading persisted sessions: java.io.EOFException
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
原因是tomcat對硬盤的session讀取失敗,徹底解決辦法一下:將work下面的文件清空,主要是*.ser文件,或者只是刪除掉session.ser即可以解決。
9.javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.dalton.domain.User
org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException
原因:(1) 是entity bean的 @Id標記錯了,標記在了String 等類型上
(2) 對id字段手工設定了值。
10 org.springframework.web.context.ContextLoader(line:215) - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with
name 'brand' defined in file [D:\Tomcat6\webapps\autoet\WEB-INF\classes\com\autoet\
action\brand\BrandAction.class]: Instantiation of bean failed; nested exception is
org.springframework.beans.BeanInstantiationException: Could not instantiate bean
class [com.autoet.action.brand.BrandAction]: Constructor threw exception; nested
exception is java.lang.NullPointerException
原因:項目使用了<context:component-scan/>掃描機制, 而類BrandAction沒有標注為原型,
為類添加 @Scope("prototype")標注(與@Controller相同位置)
11 org.hibernate.tool.hbm2ddl.SchemaUpdate(line:222) - could not complete schema update
java.lang.UnsupportedOperationException: Not supported by BasicDataSource
原因 spring.xml 與 persistence.xml中都配置了數據庫連接,注釋掉persistence.xml中的連接信息
12 org.apache.struts2.dispatcher.Dispatcher(line:27) - Dispatcher initialization failed
Unable to load configuration. - [unknown location]
Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]
原因 struts.xml中使用了<constant name="struts.objectFactory" value="spring"/>,將其注釋掉