小编Oli*_*ohm的帖子

为什么我的投影界面没有被Spring Data REST选中?

我试图使用Spring Data REST(版本2.3.0.RELEASE)进行预测.我阅读了参考文档,并收集了这些是我需要的部分:

JPA实体

@Entity
public class Project implements Serializable {

    @Basic(optional = false)
    @Column(name = "PROJECT_NAME")
    private String projectName;

    // ... lots and lots of other stuff
}
Run Code Online (Sandbox Code Playgroud)

与该实体一起使用的存储库

@Repository
public interface ProjectRepository extends JpaRepository<Project, Long> { }
Run Code Online (Sandbox Code Playgroud)

并且投影只检索该实体的名称

@Projection(name="names", types={Project.class})
public interface ProjectProjectionNamesOnly  {

  String getProjectName();
}
Run Code Online (Sandbox Code Playgroud)

我希望能够选择只检索一个项目名称列表,并且投影看起来非常适合这一点.因此,通过此设置,我在http:// localhost:9000/projects/1?projection = names上点击我的端点.我找回所有属性和集合链接,但我希望只返回名称和自我链接.

我还看了关于投影示例项目,但示例是摘录,它似乎与投影不同,因为它是参考的不同部分.我尝试了它,但它无论如何都没有用.

所以问题是:如何使用spring数据休息投影来检索实体的单个属性(及其自身链接)?

spring-data spring-data-rest

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

如果使用多个模块,Spring Data如何知道wicht存储以支持存储库?

在Spring Data项目中,如果我正在使用多种类型的存储库,即JPA存储库和Mongo存储库,并且如果我要扩展,CrudRepository那么Spring Data如何知道为该存储库选择哪个存储?它可以使用JPA或Mongo。它是基于在每个持久实体上添加的注释@Document还是@Entity

jpa mongodb spring-data spring-data-jpa

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

在存储库接口或实体类中定义查询之间的区别?

抱歉,这是一个非常笨拙/愚蠢的问题,但是我想知道,除了实现之外,在存储库中定义查询之间是否还有其他区别:

public interface EmployeeRepository<Employee, Integer> {

    @Query("select e from Employee e where e.name like :name")
    public List<Employee> findByName(@Param("name") String name);
}
Run Code Online (Sandbox Code Playgroud)

并在实体中定义查询:

@Entity
@NamedQuery(name="Employee.findByName", query="select e from Employee e where e.name like :name")
public class Employee {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    //...
}
Run Code Online (Sandbox Code Playgroud)

像是两者都有优点/缺点?

jpa repository named-query spring-data spring-data-jpa

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

使用Spring Data REST而不是Spring Data JPA有什么好处?

我知道spring数据休息会将你的存储库导出为REST服务.但我想知道使用spring数据jpa的优点.

java spring spring-data spring-data-jpa spring-data-rest

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

为什么使用别名的本机删除查询在 Spring Data JPA 中不起作用?

在 JPA Spring 数据中使用 DELETE 别名是否有任何已知问题?这就像删除别名的魅力一样。我有一个 JPA Spring 数据本机查询,如下所示:-

    @Modifying
    @Transactional
    @Query(value = "delete from Customer d where d.name = ?1", nativeQuery = true)
    public void removeOnName(String name);
Run Code Online (Sandbox Code Playgroud)

这将引发如下异常:-

    01:11:13.616 [main] WARN  o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 1064, SQLState: 42000
01:11:13.616 [main] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'd where d.name = 'kiran'' at line 1
01:11:13.621 [main] WARN …
Run Code Online (Sandbox Code Playgroud)

java spring jpa spring-data

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

带有 Spring Data JPA 的 Mongodb 文档中的 PrePersist 和 PreUpdate

我有使用问题@PrePersist,并@PreUpdate在MongoDB中我的实体有有像createAt和updateAt,一切都做工精细元场,如果它定义了一个超类@Entity,但它似乎不工作@Document。那么,什么功能,我可以使用类似的工作,@PrePersist@PreUpdate为蒙戈实体的家伙?这是我的超类

@EntityListeners(AuditingEntityListener.class)
public class ItemDocument implements Serializable {

    private static final long serialVersionUID = 5894122627332059602L;

    @Id
    private UUID id;
    @Field("created_at")
    @CreatedDate
    private long created_at;
    @Field("created_by")
    private String created_by;
    @Field("updated_at")
    @LastModifiedDate
    private long updated_at;
    @Field("updated_by")
    private String updated_by;

    @PrePersist
    protected void onPersist() {
        this.created_at = new Date().getTime();
        this.updated_at = this.created_at;
    }

    /**
     * On update.
     */
    @PreUpdate
    protected void onUpdate() {
        this.updated_at = new Date().getTime();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的实体

@Document(collection …
Run Code Online (Sandbox Code Playgroud)

java spring mongodb spring-data spring-data-mongodb

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

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
查看次数