标签: spring-data

Spring Config扫描Spring Data存储库?

我试图在一个小型独立应用程序中一起使用spring数据和spring配置.

...
  public static void main( String[] args )
  {        
    ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
    ... 
  }
Run Code Online (Sandbox Code Playgroud)

1.我的问题是如何在不使用的情况下发现spring数据存储库

<jpa:repositories base-package="foo.repositories" />
Run Code Online (Sandbox Code Playgroud)

通过spring config?

2.如果没有,我可以以某种方式一起使用'ClassPathXmlApplicationContext'和'AnnotationConfigApplicationContext'吗?

java spring spring-data

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

如何使用java config而不是XML声明存储库populator bean?

我正在开发一个基于Spring的项目(迄今为止)完全没有XML,除了现在我已经使用Spring JPA存储库populator打了一个墙:

<repository:jackson-populator location="classpath:data.json" />
Run Code Online (Sandbox Code Playgroud)

如何在java @Configuration类中表达上述内容?

这篇文章建议直接使用FactoryBean:https://stackoverflow.com/a/13566712/1746274

我试过了,我得到的最接近的是以下但是不太正确.

@Bean(name="repositoryPopulator")
public RepositoryPopulator getRespositoryPopulator() throws Exception {
    final JacksonRepositoryPopulatorFactoryBean factory =  new JacksonRepositoryPopulatorFactoryBean();
    factory.getObject().setResourceLocation("classpath:test-data.json");
    factory.afterPropertiesSet();
    return factory.getObject();
}
Run Code Online (Sandbox Code Playgroud)

以上结果FactoryBeanNotInitializedException与消息有关JacksonRepositoryPopulatorFactoryBean does not support circular references.

有任何想法吗?

java spring jpa spring-data spring-data-jpa

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

如何使用Spring Data JPA和Spring Security实现AuditorAware?

我们在应用程序中使用Hibernate/JPA,Spring,Spring Data和Spring Security.我有一个User使用JPA映射的标准实体.而且,我有一个UserRepository

public interface UserRepository extends CrudRepository<User, Long> {
    List<User> findByUsername(String username);
}
Run Code Online (Sandbox Code Playgroud)

它遵循Spring Data约定来命名查询方法.我有一个实体

@Entity
public class Foo extends AbstractAuditable<User, Long> {
    private String name;
}
Run Code Online (Sandbox Code Playgroud)

我想使用Spring Data审计支持.(如此处所述.)因此我创建了AuditorService如下:

@Service
public class AuditorService implements AuditorAware<User> {

    private UserRepository userRepository;

    @Override
    public User getCurrentAuditor() {
        String username = SecurityContextHolder.getContext().getAuthentication().getName();
        List<User> users = userRepository.findByUsername(username);
        if (users.size() > 0) {
            return users.get(0);
        } else {
            throw new IllegalArgumentException();
        }
    }

    @Autowired
    public void setUserService(UserService userService) …
Run Code Online (Sandbox Code Playgroud)

spring hibernate jpa spring-security spring-data

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

Spring Boot:创建名为'jpaMappingContext'的bean时出错:java.lang.NullPointerException

我的组合是Spring Boot + Spring Data Jpa + Multiple Databases.我在启动应用程序时遇到NullPointer异常.像SPring Data with Boot这样的感觉无法生成JPA元数据.我没有得到任何与此错误相关的资源.

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaMappingContext': Invocation of init method failed; nested exception is java.lang.NullPointerException
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
        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.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:736)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
        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:686)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:957)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:946)
        at com.verient.infinipay.staticcard.Application.main(Application.java:25)
        ... 6 more
Caused by: java.lang.NullPointerException
        at org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.getMetamodels(JpaMetamodelMappingContextFactoryBean.java:90)
        at org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.createInstance(JpaMetamodelMappingContextFactoryBean.java:56)
        at org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.createInstance(JpaMetamodelMappingContextFactoryBean.java:26)
        at org.springframework.beans.factory.config.AbstractFactoryBean.afterPropertiesSet(AbstractFactoryBean.java:134)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570) …
Run Code Online (Sandbox Code Playgroud)

spring jpa spring-data spring-data-jpa spring-boot

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

@RestController和@RepositoryRestController之间的区别

什么是典型的用例代码,显示这两个注释之间的区别 - 意味着@RestController@RepositoryRestController- ?

spring-mvc spring-data spring-data-rest spring-restcontroller

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

Spring Boot中的JPA存储库"没有类型的限定bean"

我正在使用Spring Boot实现Rest API.由于我的实体类来自另一个包的包,我必须使用注释指定它EntityScan.此外,我曾经EnableJpaRepositories指定了定义JPA存储库的包.这是我的项目的样子:

在此输入图像描述

//Application.java

@Configuration
@EnableAutoConfiguration
@ComponentScan
@EntityScan("org.mdacc.rists.cghub.model")
@EnableJpaRepositories("org.mdacc.rists.cghub.ws.repository") 
Run Code Online (Sandbox Code Playgroud)

在我的控制器类中,我有一个自动装配的SeqService对象.

//SeqController.java

@Autowired private SeqService seqService;

@RequestMapping(value = "/api/seqs", method = GET, produces = APPLICATION_JSON_VALUE)
public ResponseEntity<List<SeqTb>> getSeqs() {
    List<SeqTb> seqs = seqService.findAll();
    return new ResponseEntity<List<SeqTb>>(seqs, HttpStatus.OK);
}
Run Code Online (Sandbox Code Playgroud)

SeqService是一个接口,我从中创建了一个Bean类SeqServiceBean.在SeqServiceBeanI中自动安装了JPA存储库:

// SeqServiceBean.java

@Autowired private SeqRepository seqRepository;

@Override
public List<SeqTb> findAll() {
    List<SeqTb> seqs = seqRepository.findAll();
    return seqs;
}

//SeqRepository.java

@Repository
public interface SeqRepository extends JpaRepository<SeqTb, Integer> {

    @Override
    public List<SeqTb> findAll();

    public SeqTb …
Run Code Online (Sandbox Code Playgroud)

java spring jpa spring-data spring-boot

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

混合Spring MVC + Spring Data Rest会产生奇怪的MVC响应

我有两个JPA实体,一个带有SDR导出的存储库,另一个带有Spring MVC控制器,还有一个非导出的存储库.

MVC公开实体具有对SDR管理实体的引用.请参阅下面的代码参考.

User从中检索a时,问题就出现了UserController.SDR管理的实体不会序列化,而且似乎Spring可能正在尝试在响应中使用HATEOAS引用.

这是GET一个完全填充的User外观:

{
  "username": "foo@gmail.com",
  "enabled": true,
  "roles": [
    {
      "role": "ROLE_USER",
      "content": [],
      "links": [] // why the content and links?
    }
    // no places?
  ]
}
Run Code Online (Sandbox Code Playgroud)

如何User通过嵌入式SDR管理实体从Controller中清楚地返回实体?

Spring MVC管理

实体

@Entity
@Table(name = "users")
public class User implements Serializable {

    // UID

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @JsonIgnore
    private Long id;

    @Column(unique = true)
    @NotNull
    private String username;

    @Column(name = "password_hash")
    @JsonIgnore
    @NotNull
    private String passwordHash;

    @NotNull …
Run Code Online (Sandbox Code Playgroud)

java spring-mvc spring-data spring-data-rest spring-boot

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

Spring Data加入规范

我正在尝试转换这个原始的SQL查询:

select product.* from following_relationship
join product on following_relationship.following=product.owner_id
where following_relationship.owner=input 
Run Code Online (Sandbox Code Playgroud)

进入Spring Data规范,我认为到目前为止我的问题是加入这些表.

这是我目前在规范中的转换:

protected Specification<Product> test(final User user){
   return new Specification<Product>() {
       @Override
       public Predicate toPredicate(Root<Product> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
           Join<FollowingRelationship,Product> pfJoin = query.from(FollowingRelationship.class).join("following");
           pfJoin.on(cb.equal(pfJoin.get("following"),"owner"));
           return  query.where(cb.equal(pfJoin.get("following"),user)).getGroupRestriction();

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

我得到了这个例外:

Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessA
piUsageException: org.hibernate.hql.internal.ast.InvalidWithClauseException: with clause can only reference columns in the driving table 
Run Code Online (Sandbox Code Playgroud)

我想补充一点,我是Spring框架的新手,例如这是我春天的第一个应用程序,所以我为新手问题道歉;)

编辑:添加的实体Product,FollowingRelationShip

Entity
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "json_id_prop")
public class FollowingRelationship extends BaseEntity {

    @ManyToOne(fetch = …
Run Code Online (Sandbox Code Playgroud)

java mysql spring spring-data

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

如何使用Spring Data Pagination在一个页面中获取所有结果

我希望在单页中获得所有结果,我已尝试过

Pageable p = new PageRequest(1, Integer.MAX_VALUE);
return customerRepository.findAll(p);
Run Code Online (Sandbox Code Playgroud)

以上是行不通的,有没有办法实现这个?似乎无法通过此处询问的自定义查询实现.

java spring spring-data spring-data-jpa spring-repositories

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

Spring - 找到多个Spring Data模块,进入严格的存储库配置模式

我使用Spring Boot 2和Spring Data,Spring-Data-Elastisearch和Spring-data-Redis(用于http会话).当我启动应用程序.我收到了

2017-10-29 17:38:33.376  INFO 18625 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2017-10-29 17:38:33.451  INFO 18625 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2017-10-29 17:38:33.461  INFO 18625 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2017-10-29 17:38:33.768  INFO 18625 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode! …
Run Code Online (Sandbox Code Playgroud)

spring-data spring-data-jpa spring-data-redis spring-boot spring-data-elasticsearch

15
推荐指数
5
解决办法
1万
查看次数