小编Jen*_*der的帖子

Spring Data-JPA与JPA:有什么区别?

我对Spring Data-JPA和JPA之间的区别感到有点困惑.我知道JPA它是使用流行的ORM技术将Java对象持久化到关系数据库的规范,即换句话说,JPA提供接口和其他ORM技术,实现称为JPA提供程序的接口,例如Hibernate.

现在究竟是什么Spring Data JPA.Spring Data JPA是否在JPA上增加了一些功能(接口),仍然只是指定它还是JPA提供者?

我看到Spring Data JPA围绕存储库工作(DAO层:如果我没有错).所以我的意思是使用'Spring Data JPA + Hibernate'或仅使用'Hibernate'指导它是如何不同的?

java orm hibernate jpa-2.0 spring-data-jpa

137
推荐指数
3
解决办法
7万
查看次数

Spring Boot + JPA:忽略列名注释

我有一个依赖的Spring Boot应用程序spring-boot-starter-data-jpa.我的实体类有一个带有列名的列注释.例如:

@Column(name="TestName")
private String testName;
Run Code Online (Sandbox Code Playgroud)

由此生成的SQL创建test_name为列名.在寻找解决方案后,我发现spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy解决了问题(列名取自列注释).

不过,我的问题是为什么没有设置为EJB3NamingStrategyJPA的naming_strategy 忽略列注释?也许hibernate方言与它有关?我正在连接到MS SQL 2014 Express,我的日志包含:

Unknown Microsoft SQL Server major version [12] using SQL Server 2000 dialect
Using dialect: org.hibernate.dialect.SQLServerDialect 
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa spring-boot

111
推荐指数
9
解决办法
9万
查看次数

如何找出引用的字体以及嵌入在PDF文档中的字体

我们对PDF文档中的字体有一点问题.为了解决我想检查的问题,哪些字体实际嵌入在pdf文档中,哪些字体仅被引用.是否有一种简单(廉价和免费)的方式呢?

pdf fonts

101
推荐指数
4
解决办法
8万
查看次数

74
推荐指数
1
解决办法
3万
查看次数

JpaRepository不支持DML操作[删除查询]

我在扩展JPaRepository的界面中编写了一个删除某些对象的查询,但是当我执行查询时它抛出异常!谁能为我解释一下,并提前谢谢你:)

查询:

public interface LimitRepository extends JpaRepository<CLimit, Long> {

  @Query("delete from CLimit l where l.trader.id =:#{#trader.id}")
  void deleteLimitsByTrader(@Param("trader") CTrader trader);

}
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误,可以任意请,为我解释一下,谢谢大家:)

例外:

  org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [delete from com.query.domain.CLimit l where l.trader.id =:__$synthetic$__1]
      at org.hibernate.hql.internal.ast.QueryTranslatorImpl.errorIfDML(QueryTranslatorImpl.java:318)
      at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:369)
      at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236)
      at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1300)
      at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103)
      at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:573)
      at org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:495)
      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.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:364)
      at com.sun.proxy.$Proxy98.getSingleResult(Unknown Source)
      at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:206)
      at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:78)
      at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:102)
      at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:92)
      at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:482)
      at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:460)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
      at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:61) …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate hql spring-data-jpa

51
推荐指数
3
解决办法
4万
查看次数

实体类名称转换为带有下划线的SQL表名称

我定义了以下实体:

@Entity
@Table(name = "EmailTemplate")
public class EmailTemplate {
Run Code Online (Sandbox Code Playgroud)

尽管有表格注释,但我收到了java.sql.SQLException: Invalid object name 'email_template'.如何防止将诸如EmailTemplate之类的实体类转换为email_template表名?

编辑:

我正在使用Spring Boot:启动JPA.从我的build.gradle文件,

compile("org.springframework.boot:spring-boot-starter-data-jpa")
Run Code Online (Sandbox Code Playgroud)

jpa spring-data-jpa spring-boot

42
推荐指数
3
解决办法
4万
查看次数

Spring + hibernate与Spring Data JPA:它们有什么不同吗?

虽然不是新手,但我正在努力学习弹簧框架(再次!),以确保我真正理解这一点.我对核心Spring(DI)有了一个很好的想法.现在,我专注于数据层.

我遇到过" Spring and Hibernate " 这个词.我可以解释它意味着将Spring Framework与Hibernate一起用作ORM工具/ JPA提供程序.

现在我遇到了" Spring Data JPA ".我澄清了有关Spring Data JPA的内容,它是JPA的一个抽象层(在Spring Data JPA下使用Hibernate或任何其他JPA提供程序).

现在这些术语是一样的吗?也就是说," Spring + hibernate "与" Spring Data JPA "相同.如果没有,那么差异/相似之处是什么?

我真的很困惑很多条款/声明(如上所述)似乎相似,但可能会有所不同.

spring hibernate jpa spring-orm spring-data-jpa

41
推荐指数
2
解决办法
1万
查看次数

使用Spring 4 PropertySource时找不到可重复的内容

我们将Spring 4.0.1.RELEASE与jdk6结合使用(这是固定的).当然,我们使用@PropertySource注释来完成Java中的配置.当我们使用gradle编译项目时,这会导致恼人的警告消息:

org\springframework\context\annotation\PropertySource.class(org\springframework\context\annotation:PropertySource.class):警告:在类型'java.lang.annotation.Repeatable'中找不到annotat ion方法'value()':class找不到java.lang.annotation.Repeatable的文件

这是由于使用not(在jdk6中)现有的Repeatable类引起的,我很高兴它只是一个警告.我喜欢gradle的干净输出,这只是令人讨厌,因为它可能会混淆其他"真正的"警告(如checkstyle ......).

也许任何人都遇到了同样的问题,并为这种情况得到了一个(不是那么多黑客)解决方案.我只想再次看到干净的输出.

java spring

38
推荐指数
2
解决办法
2万
查看次数

ImprovedNamingStrategy不再适用于Hibernate 5

我有简单的spring-jpa配置,我配置了Hibernate ImprovedNamingStrategy.这意味着如果我的实体类有一个变量userName,那么Hibernate应该将它转换user_name为查询数据库.但是在我升级到Hibernate 5后,这个命名转换停止了工作.我收到错误:

错误:"字段列表"中的未知列'user0_.userName'

这是我的Hibernate配置:

@Configuration
@EnableJpaRepositories("com.springJpa.repository")
@EnableTransactionManagement
public class DataConfig {

    @Bean
    public DataSource dataSource(){
        DriverManagerDataSource ds = new DriverManagerDataSource();
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setUrl("jdbc:mysql://localhost:3306/test");
        ds.setUsername("root");
        ds.setPassword("admin");
        return ds;
    }


    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(){ 

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setShowSql(Boolean.TRUE);
        vendorAdapter.setDatabase(Database.MYSQL);

        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setDataSource(dataSource());
        factory.setPackagesToScan("com.springJpa.entity");


        Properties jpaProperties = new Properties();

        jpaProperties.put("hibernate.ejb.naming_strategy","org.hibernate.cfg.ImprovedNamingStrategy");
        jpaProperties.put("hibernate.dialect","org.hibernate.dialect.MySQL5InnoDBDialect");

        factory.setJpaProperties(jpaProperties);
        factory.afterPropertiesSet();
        return factory;
    }

    @Bean
    public SharedEntityManagerBean entityManager() {
        SharedEntityManagerBean entityManager = new SharedEntityManagerBean();
        entityManager.setEntityManagerFactory(entityManagerFactory().getObject());
        return entityManager;
    }



    @Bean
    public …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa spring-data-jpa hibernate-5.x

38
推荐指数
4
解决办法
3万
查看次数

隔离控制器测试无法实例化Pageable

我有一个Spring MVC控制器,它使用Spring-Data的分页支持:

@Controller
public class ModelController {

    private static final int DEFAULT_PAGE_SIZE = 50;

    @RequestMapping(value = "/models", method = RequestMethod.GET)
    public Page<Model> showModels(@PageableDefault(size = DEFAULT_PAGE_SIZE) Pageable pageable, @RequestParam(
            required = false) String modelKey) {

//..
        return models;
    }

}
Run Code Online (Sandbox Code Playgroud)

我想使用漂亮的Spring MVC测试支持测试RequestMapping.为了使这些测试保持快速并与所有其他内容隔离开来,我不想创建完整的ApplicationContext:

public class ModelControllerWebTest {
    private MockMvc mockMvc;

    @Before
    public void setup() {
        ModelController controller = new ModelController();
        mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
    }

    @Test
    public void reactsOnGetRequest() throws Exception {
        mockMvc.perform(get("/models")).andExpect(status().isOk());
    }

}
Run Code Online (Sandbox Code Playgroud)

这种方法适用于其他控制器,它们不期望使用Pageable,但是有了这个,我得到了一个很好的长Spring堆栈跟踪.它抱怨无法实例化Pageable:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is …
Run Code Online (Sandbox Code Playgroud)

testing spring-mvc spring-data spring-mvc-test

37
推荐指数
3
解决办法
1万
查看次数