小编Nei*_*ton的帖子

多个SessionFactory配置因org.springframework.beans.factory.UnsatisfiedDependencyException异常而失败

我们的应用程序需要处理多个数据库.我们尝试通过Hibernate配置配置多个数据源,并为数据库1添加了两个配置,为数据库2添加了第二个配置.此配置失败,并出现以下异常

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'DB1TransactionManager' defined in class path resource [org/npcc/ccms/config/db/HibernateConfig4DB1.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.SessionFactory]: : No qualifying bean of type [org.hibernate.SessionFactory] is defined: expected single matching bean but found 2: AgrgtrSessionFactory,HRSessionFactory,StageSessionFactory; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [org.hibernate.SessionFactory] is defined: expected single matching bean but found 3: DB1SessionFactory,DB2SessionFactory
org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:747)
    org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:462)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1094)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:989)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
    org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
    org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658)
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:530)
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484)
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) …
Run Code Online (Sandbox Code Playgroud)

spring annotations hibernate transactions

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

格式错误的JSON:Spring中意外的'<'

我想json从JPA 生产@Entity,我有

@Entity
@JsonAutoDetect
public class Bar implements Serializable {     
    @Id
    @GeneratedValue
    private Integer id;
    private String title;
    //omitting other stuff
}
Run Code Online (Sandbox Code Playgroud)

我的控制器是

@RestController
public class BarController {

    @Autowired
    private BarService barService;

    @RequestMapping(value = "/", method = RequestMethod.GET, headers = "Accept=application/json", produces={"application/json"})

    public List<Bar> list() {            
        return barService.findAllBars());
    }

}
Run Code Online (Sandbox Code Playgroud)

我在浏览器中遇到此错误

HTTP 406

并在邮递员 邮差格式错误的JSON

这有什么问题.

java spring json

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

使用 Java (Spring) 从数据库安排任务的最佳方法

我正在寻找框架来安排数据库中填充的一组任务

JPA 实体看起来像这样

@Entity
class Task extends Model {
    @NotNull
    @Min(1L)
    @Column(name = "interval_ms", nullable = false)
    Integer interval

    @NotNull
    String payload  

    @NotNull
    Boolean enabled
}

@Entity
class TaskResult extends Model {
    @ManyToOne(optional = false)
    Task task

    @Column(nullable = false)
    Boolean result

    @Column(nullable = false)
    String message
}
Run Code Online (Sandbox Code Playgroud)

任务应在“间隔”字段中定义的每个间隔执行,结果应写入 TaskResult 表

任务的目的是发出 GET 或 POST 请求,因此必须池化请求以避免出现大量任务开始并行执行的情况。

我正在使用弹簧靴。

这里的最佳实践是什么?

java spring scheduled-tasks polling

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

Spring Data JPA - 是否可以对计算属性进行排序?

假设您有以下实体:

@Entity
public class Game {

    @Id
    @GeneratedValue
    private Integer id;

    private String name;

    private Calendar startTime;
    private int durationInSeconds;

    public GameStatus getStatus() {
        if( startTime.after(Calendar.getInstance()))
        {
            return GameStatus.SCHEDULED;
        } else {
            Calendar endTime = Calendar.getInstance();
            endTime.setTime(startTime.getTime());
            endTime.roll(Calendar.SECOND, durationInSeconds);

            if( endTime.after(Calendar.getInstance())) {
                return GameStatus.OPEN_FOR_PLAY;
            }
            else {
                return GameStatus.FINISHED;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我GameRepository是a PagingAndSortingRepository,我如何获得一个结果页面,按status属性排序?

我目前得到:

java.lang.IllegalArgumentException: Unable to locate Attribute  with the the 
given name [status] on this ManagedType [org.test.model.Game]
Run Code Online (Sandbox Code Playgroud)

我可以理解,因为status确实没有JPA属性.有没有解决的办法?

(我在下面使用Hibernate,所以任何特定的Hibernate都可以)

java spring spring-data spring-data-jpa

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

自定义ItemReader与spring-data-jpa

我正在使用现有实体和存储库创建Spring批处理项目.我需要使用自定义ItemReader作业,使用现有的jpa存储库读取数据.

定制读者

public class InMemoryReader implements ItemReader<Product> {

    @Autowired
    private ProductService productService;


    private int nextStudentIndex;
    private List<Product> studentData;

    public InMemoryReader() {
        initialize();
    }

    private void initialize() {
        studentData = new ArrayList<Product>();
        studentData.add(new Product("hi"));

        for (Product p : productService.get())
            studentData.add(p);
        nextStudentIndex = 0;
    }

    @Override
    public Product read() throws Exception {
        Product nextStudent = null;

        if (nextStudentIndex < studentData.size()) {
            nextStudent = studentData.get(nextStudentIndex);
            nextStudentIndex++;
        }

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

但是我无法在自动装配ProductServiceitemreader.它抛出错误如下:

org.springframework.beans.factory.BeanCreationException: Error creating bean with …
Run Code Online (Sandbox Code Playgroud)

java spring-batch spring-data-jpa spring-boot

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

Bean验证范围约束

我需要在Entity数据字段上实现范围约束:

@Entity
@Table(name = "T_PAYMENT")
public class Payment extends AbstractEntity {

    //....

    //Something like that
    @Range(minValue = 80, maxValue = 85)
    private Long paymentType;

}
Run Code Online (Sandbox Code Playgroud)

我已经创建了验证服务,但必须实现其中许多情况.

如果插入的数字超出范围,我需要应用程序抛出异常.

java hibernate-validator bean-validation

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

在Spring Data JPA中创建分页

我正在尝试在Spring Data JPA中实现分页功能。我指的是此博客,我的控制器包含以下代码:

 @RequestMapping(value="/organizationData", method = RequestMethod.GET)
  public String list(Pageable pageable, Model model){
    Page<Organization> members = this.OrganizationRepository.findAll(pageable);
    model.addAttribute("members", members.getContent());
    float nrOfPages = members.getTotalPages();
    model.addAttribute("maxPages", nrOfPages);
    return "members/list"; 
  }
Run Code Online (Sandbox Code Playgroud)

我的DAO如下:

@Query(value="select m from Member m", countQuery="select count(m) from Member m")
  Page<Organization> findMembers(Pageable pageable);
Run Code Online (Sandbox Code Playgroud)

我能够显示前20条记录,如何显示接下来的20条记录? 还有其他我可以参考的分页示例吗?

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

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

使用 JpaRepository 进行动态查询

我正在尝试使用 JpaRepository 获取查询结果,但它对我不起作用:

public interface PeticionRepository extends JpaRepository<Peticion, Long> {

    @Query(value = "select peticion from Peticion peticion where (peticion.codigo like CONCAT(?1, '%') or "
        + "peticion.contacto.direccionGeneral.nombre like CONCAT(?1, '%') or peticion.contacto.poa like CONCAT(?1, '%') or "
        + "peticion.proyecto.nombre like CONCAT (?1, '%') or peticion.datosAdicionales.estado.nombre like CONCAT(?1, '%'))")
    List<Peticion> findByText(String texto);

    List<Peticion> findByFilter(String unidad, String nombreIniciativa, String codigo,
        LocalDate fechaConsejeroDFormat, LocalDate fechaConsejeroHFormat);
}
Run Code Online (Sandbox Code Playgroud)

在其他课程中,我需要覆盖findByFilter要创建查询的函数:

public abstract class JpaPeticionRepository implements PeticionRepository {

    @PersistenceContext(name = "ExterroPU") 
    private EntityManager em; 

    public void …
Run Code Online (Sandbox Code Playgroud)

java spring jpql spring-data-jpa spring-repositories

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

像Atomikos这样的JTA提供者和像HikariCP这样的连接池之间有什么关系?

我正在阅读Hibernate的Java Persistence,并且发现了以下文本。

如今,高质量的独立JTA提供程序(例如Bitronix(用于本书的示例代码)和Atomikos)已经上市,并且可以在任何Java环境中轻松安装。将这些解决方案视为支持JTA的数据库连接池

据我了解,JTA提供程序具有自己的连接池。

那么,它们是否与HikariCP和C3P0等连接池集成(如果可以的话)?谢谢。

java connection-pooling jta atomikos hikaricp

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

使用pageable排序自定义JPA查询

因此,我已经使用标准的Spring Data JPA接口(扩展了PagingAndSortingRepository)来实现此目的,以便实现REST API的分页和排序。问题是,现在我想实现同样的目的,但是现在仅使用原始的JPA,到目前为止,我设法使我的API分页,但排序根本不起作用。每当我尝试设置参数(使用pageable.getSort()从可分页对象中设置)时,它都会以查询错误结尾(如果我只是将字符串作为参数(如“名称”)发送或仅发送了排序对象,它就会显示错误)。

这是一些代码:

我的回购实现:

    @Override
public List<Project> findByAll(Pageable pageable) {
    Query query = em.createQuery("SELECT project FROM Project project ORDER BY :sort");
    query.setParameter("sort", pageable.getSort());
    query.setMaxResults(pageable.getPageSize());
    query.setFirstResult(pageable.getPageSize() * pageable.getPageNumber());
    return query.getResultList();
}
Run Code Online (Sandbox Code Playgroud)

我的服务:

@Override
public Page<Project> findAll(Pageable pageable) {
    objects = Lists.newArrayList(repository.findByAll(pageable));
    PageImpl<Project> pages= new PageImpl<Project>(objects, pageable, repository.count());
    return pages;
}
Run Code Online (Sandbox Code Playgroud)

需要明确的是,我正在通过URI填充Pageable对象,并且可以从控制台中说它实际上是在获取数据,因此我认为问题出在存储库上。

编辑:这是我将setParameter(“ sort”,...)替换为硬编码字符串又称为query.setParameter(“ sort”,“ name”)时遇到的错误:

java.lang.NumberFormatException: For input string: "name"
Run Code Online (Sandbox Code Playgroud)

而且我认为该方法也应该代表字符串。如果我使用query.setParameter(“ sort”,pageable.getSort()),则错误是相同的。

sorting spring pagination spring-data spring-data-jpa

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