不见得hibernate在任何场景都做的那么完美,@ManyToOne(fetch=FetchType.LAZY) 的时候就不是那个样子了。
如何挂入EclipseLink呢,spring data jpa都集成hibernate了,只需要做如下小小调整就OK了。
1.变更pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.5.2</version>
</dependency>
这样就好了。
2.增加一个配置文件
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.jpa.vendor.AbstractJpaVendorAdapter;
import org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter;
import org.springframework.transaction.jta.JtaTransactionManager;
@Configuration
public class CustomJpaConfiguration extends JpaBaseConfiguration {
protected CustomJpaConfiguration(DataSource dataSource, JpaProperties properties,
ObjectProvider<JtaTransactionManager> jtaTransactionManagerProvider) {
super(dataSource, properties, jtaTransactionManagerProvider);
}
@Override
protected AbstractJpaVendorAdapter createJpaVendorAdapter() {
return new EclipseLinkJpaVendorAdapter();
}
@Override
protected Map<String, Object> getVendorProperties() {
final Map<String, Object> ret = new HashMap<String, Object>();
ret.put("eclipselink.weaving", "false");
ret.put("eclipselink.ddl-generation", "create-or-extend-tables");
return ret;
}
}
3.最后调整application.properties
#Spring DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/test
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
#JPA
spring.jpa.show-sql = true
需要增加database其他参数的,另行调整就好。
三步调整到eclipselink上来了。Everything is OK!