标签: spring-data-jpa

如何使用 Spring Data JPA 在没有结果集的情况下执行本机 SQL 服务器查询

我正在使用 Spring Data JPA 和 Hibernate 创建一个存储库,除其他外,我添加了两个查询来启用或禁用插入标识,以便我可以添加具有指定 ID 的值。我认为在界面中创建原生查询是正确的

   public interface PartRepo extends  PagingAndSortingRepository <Part,Long > {

        //other methods

        @Query(value = "SET IDENTITY_INSERT PART ON", nativeQuery = true)
        public void enableInsertIdentity();

        @Query(value = "SET IDENTITY_INSERT PART OFF", nativeQuery = true)
        public void disableInsertIdentity();

    }
Run Code Online (Sandbox Code Playgroud)

但是当休眠执行SET IDENTITY_INSERT查询之一时,我收到此错误:

com.microsoft.sqlserver.jdbc.SQLServerException: The statement did not return a result set.
Run Code Online (Sandbox Code Playgroud)

这是完整的堆栈跟踪:

Hibernate: SET IDENTITY_INSERT PART ON
2016-02-08 15:20:06.069  WARN 7580 --- [nio-8081-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: null
2016-02-08 15:20:06.069 ERROR 7580 …
Run Code Online (Sandbox Code Playgroud)

sql-server hibernate spring-data-jpa

1
推荐指数
1
解决办法
2891
查看次数

spring data jpa细粒度审计,自定义审计

我需要在同一个表中插入用户所属的用户名和组名(均在 SecurityContext 中可用)。

class Entity

{ 

   @createdBy 
   String username 

   @createdBy 
   String groupname 

   other fields ...

}
Run Code Online (Sandbox Code Playgroud)

根据要求。我无法通过创建用户类并通过外键引用它来解决这个问题。

使用 AuditingHandler 的当前实现,两个字段都获得相同的值。我如何确保它们获得各自的值。

这可以使用当前的实现来实现吗?如果不是,我如何提供 AuditingHandler 的自定义实现?

auditing spring-data-jpa

1
推荐指数
1
解决办法
1353
查看次数

使用Spring Data JPA nativeQuery时如何用参数值替换表名

像这样:

public interface XXXRepository extends CrudRepository<XXX, Integer> {
@Query(value = "select * from ?1 where ...", nativeQuery = true)
List<XXX> findByXXX(String tableName, ...);}
Run Code Online (Sandbox Code Playgroud)

它在代码上给出了 MYSQL 语法错误。语法错误显示SQL中表名被“'”包围。

java spring nativequery spring-data-jpa

1
推荐指数
1
解决办法
6280
查看次数

Spring Data JPA:从不同的表创建规范子查询

我正在尝试构建规范来为以下查询谓词子查询。选择 u.* from User u where u.login in(选择 ur.role_id from userRoles ur where ur.role_Id = roleId)。

到目前为止,这是我构建的部分

public static Specification<User> userRoleId(String roleId) {
        return new Specification<User>() {
            @Override
            public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
                //return builder.equal(root.<LocalDate> get("scheduledDisbursementDate"), scheduledDisbursementDate);
                Subquery<UserRole> subquery = query.subquery(UserRole.class);
                Root<UserRole> subqueryRoot = subquery.from(UserRole.class);
                subquery.select(subqueryRoot);
                Predicate roleIdList = builder.equal(subqueryRoot.get("roleId"), roleId);
                subquery.select(subqueryRoot).where(roleIdList);
                return builder.exists(subquery);
            }
        };
    }
Run Code Online (Sandbox Code Playgroud)

你能帮我把子查询与主查询联系起来吗?

注意:实体类中没有定义连接。一切都应该只通过子查询来完成

spring hibernate-criteria spring-data-jpa

1
推荐指数
1
解决办法
7336
查看次数

如何在 jpa spring 存储库中使用 OrderBy?

我想将 orderBy 与我的实体类的一个属性一起使用,请任何人都可以建议如何在 jpa spring 存储库中使用 OrderBy 关键字,因为我没有在 jpa 的默认关键字列表中获得此关键字。

spring spring-data-jpa spring-boot

1
推荐指数
1
解决办法
4566
查看次数

SPRING DATA-JPA + eclipseLink2.0失败了

在我的测试项目中,由于跟随错误,Spring容器无法创建扩展JpaRepository的bean.

引起:org.springframework.beans.factory.BeanCreationException:创建名为'srSvcInfoMtrRepository'的bean时出错:FactoryBean在创建对象时抛出异常; 嵌套异常是 java.lang.NoSuchMethodError: javax.persistence.EntityManager.getMetamodel()Ljavax/persistence/metamodel/Metamodel;

这可能是与JPA版本相关的问题.

我在persistence.xml中的eclipelink2.0(org.eclipse.persistence.jpa.PersistenceProvider)中指定了某些persistenceProvider.

你对这个问题有什么看法吗?

堆栈跟踪

2012-05-14 09:11:08错误捕获异常,同时允许TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@112da40]准备测试实例 *> [net.tjjang.learn.spring_jpa.test.SrSvcInfoMtrTest @ b6d6ab] java.lang.IllegalStateException:无法在org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:157)中加载ApplicationContext 在org.springframework.test.work.conring框架上的org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75) org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211)中的.TestContextManager.prepareTestInstance(TestContextManager.java:321)org.springframework.test.context.junit4.SpringJUnit4ClassRunner $ 1.runReflectiveCall(SpringJUnit4ClassRunner. java:288)在org.springframework org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:290)的org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) org.junit.runners.BlockJUnit4ClassRunner中的.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231).runChild(BlockJUnit4ClassRunner.java:49)org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:193)org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:52)org.junit. runners.ParentRunner.runChildren(ParentRunner.java:191)org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:42)org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:184)at org org.junit.runners上的org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)中的.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) .garentRunner.run(ParentRunner.java:236)位于org.eclipse.joutt.internal.junit4.runner.JUnit4TestReference.run的org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)中(JUnit4TestReference) .java:50)在org.eclipse.jdt.internal的org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)位于org.eclipse.jdt.internal.junit.runner的org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)的.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) .RemoteTestRunner.run(RemoteTestRunner.java:390)at or.e.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 引起:org.springframework.beans.factory.BeanCreationException:创建名为'srSvcInfoMtrRepository'的bean时出错:FactoryBean在创建对象时抛出异常; 嵌套异常是java.lang.NoSuchMethodError:javax.persistence.EntityManager.getMetamodel()Ljavax/persistence/metamodel/Metamodel; org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:149)位于org.springframework.beans.factory的org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:102) .support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1441)org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:305)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory) .java:193)org.springframework上的org.springframework.bens.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913). org.springframewor上的context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)k.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:103)位于org.springframework.test.context.support的org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:1).在org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:148)的org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:124)中委托SmartContextLoader.loadContext(DelegatingSmartContextLoader.java:228).还有24个 >引起:java.lang.NoSuchMethodError:javax.persistence.EntityManager.getMetamodel()Ljavax/persistence/metamodel/Metamodel;* at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getMetadata(JpaEntityInformationSupport.java:56 )org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:145)org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:83)at org. springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:66)位于org.springframework.data的org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:146). repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:120)at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport).java:39)at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)

JpaRepository类()

package net.tjjang.learn.spring_jpa.repositories;
import net.tjjang.learn.spring_jpa.domain.SrSvcInfoMtr;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.transaction.annotation.Transactional;

@Transactional(readOnly = true)
public interface SrSvcInfoMtrRepository extends JpaRepository<SrSvcInfoMtr, String> {
    Page<SrSvcInfoMtr> findBySvc_nm(String …
Run Code Online (Sandbox Code Playgroud)

spring jpa eclipselink spring-data spring-data-jpa

0
推荐指数
1
解决办法
2151
查看次数

使用Spring DATA实现DAO

我的要求是:我必须创建一个AccountRepository接口,我必须在我的AccountRepositoryImpl本身实现所有方法,所以我该怎么做呢?

例:

1)界面

/* this is the interface */  
public interface AccountRepository extends JpaRepository
{
    List<Account> getAllAccounts();
}
Run Code Online (Sandbox Code Playgroud)

2)实施?

public class AccountRepositoryImpl implements AccountRepository
{
    public List<Account> getAllAccounts() {
        // now what?
    }
}
Run Code Online (Sandbox Code Playgroud)

spring spring-data spring-data-jpa

0
推荐指数
1
解决办法
4616
查看次数

具有多个JTA数据库的Spring-Boot Webapp会引发BeanCreationException

我正在使用spring-boot-starter-web和spring-boot-starter-data-jpa以及spring-batch-admin(版本1.3.0)将现有的Spring-Batch命令行应用程序迁移到webapp.

我尝试配置应用程序,以便它可以使用多个数据库.经过大量的尝试和错误后,我终于遵循了基于JTA的示例stackoverflow.com/questions/22779155/.

但我仍然BeanCreationException一次又一次地面对同样的事情(见帖子末尾的StackTrace).

由于spring-batch-admin集成可能会出现问题?

以下是ServletInitializer的外观:

@Configuration
@EnableAutoConfiguration(exclude = { BatchAutoConfiguration.class,
    DataSourceAutoConfiguration.class, WebMvcAutoConfiguration.class })
@Import(MainConfiguration.class)
public class BatchAdmin extends SpringBootServletInitializer {
      public static void main(String[] args) {
          SpringApplication.run(BatchAdmin.class, args);
      }
      // ...
}
Run Code Online (Sandbox Code Playgroud)

这里是主要的配置类,如在提到的SO文章中所建议的:

@Configuration
@ComponentScan("com.company.*")
@Import({ ServletConfiguration.class, WebappConfiguration.class, Db1Configuration.class,
    Db2Configuration.class })
@EnableTransactionManagement
public class MainConfiguration {

  @Bean
  public JpaVendorAdapter jpaVendorAdapter() {
    HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();
    hibernateJpaVendorAdapter.setShowSql(true);
    hibernateJpaVendorAdapter.setGenerateDdl(true);
    hibernateJpaVendorAdapter.setDatabase(Database.POSTGRESQL);
    hibernateJpaVendorAdapter.setDatabasePlatform(MyPGDialect.class.getName());
    return hibernateJpaVendorAdapter;
  }

  @Bean(name = "userTransaction")
  public UserTransaction userTransaction() throws Throwable {
    UserTransactionImp userTransactionImp = new …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc spring-batch-admin spring-data-jpa spring-boot

0
推荐指数
1
解决办法
1929
查看次数

无法为'javax.persistence.EntityManager'解析bean

我正在尝试使用Spring(+ JPA)和使用anotations的Hibernate实现应用程序.

我重新加入了JPA部分.从那以后我得到:

javax.enterprise.inject.UnsatisfiedResolutionException: Unable to resolve a bean for 'javax.persistence.EntityManager' with qualifiers [@javax.enterprise.inject.Default(), @javax.enterprise.inject.Any()].
Run Code Online (Sandbox Code Playgroud)

错误.我也收到以下警告:

WARN:   WELD-000411: Observer method [BackedAnnotatedMethod] protected org.springframework.data.repository.cdi.CdiRepositoryExtensionSupport.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
WARN:   WELD-000411: Observer method [BackedAnnotatedMethod] private org.glassfish.jersey.gf.cdi.internal.CdiComponentProvider.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
WARN:   WELD-000411: Observer method [BackedAnnotatedMethod] public org.glassfish.jms.injection.JMSCDIExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate jpa spring-data-jpa

0
推荐指数
1
解决办法
3375
查看次数

使用gradle依赖项启动Spring Boot应用程序时出错

得到此错误请帮助我

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:956)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:747)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:691)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:321)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:961)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:950)
        at com.omneagate.rest.RestApplication.main(RestApplication.java:223)
    Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' …
Run Code Online (Sandbox Code Playgroud)

gradle spring-data-jpa spring-boot

0
推荐指数
1
解决办法
3218
查看次数