我正在使用 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) 我需要在同一个表中插入用户所属的用户名和组名(均在 SecurityContext 中可用)。
class Entity
{
@createdBy
String username
@createdBy
String groupname
other fields ...
}
Run Code Online (Sandbox Code Playgroud)
根据要求。我无法通过创建用户类并通过外键引用它来解决这个问题。
使用 AuditingHandler 的当前实现,两个字段都获得相同的值。我如何确保它们获得各自的值。
这可以使用当前的实现来实现吗?如果不是,我如何提供 AuditingHandler 的自定义实现?
像这样:
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中表名被“'”包围。
我正在尝试构建规范来为以下查询谓词子查询。选择 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)
你能帮我把子查询与主查询联系起来吗?
注意:实体类中没有定义连接。一切都应该只通过子查询来完成
我想将 orderBy 与我的实体类的一个属性一起使用,请任何人都可以建议如何在 jpa spring 存储库中使用 OrderBy 关键字,因为我没有在 jpa 的默认关键字列表中获得此关键字。
在我的测试项目中,由于跟随错误,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) 我的要求是:我必须创建一个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-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
我正在尝试使用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) 得到此错误请帮助我
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) spring-data-jpa ×10
spring ×7
spring-boot ×3
hibernate ×2
java ×2
jpa ×2
spring-data ×2
auditing ×1
eclipselink ×1
gradle ×1
nativequery ×1
spring-mvc ×1
sql-server ×1