小编Pra*_*kar的帖子

如何在Spring Data中使用OrderBy和findAll

我正在使用spring数据,我的DAO看起来像

public interface StudentDAO extends JpaRepository<StudentEntity, Integer> {
    public findAllOrderByIdAsc();   // I want to use some thing like this
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,注释行显示了我的意图.Spring Data可以提供内置功能,使用这种方法通过ASC/DESC查找某些列的所有记录顺序吗?

spring spring-data spring-data-jpa

246
推荐指数
6
解决办法
25万
查看次数

在使用@Retention,@ Transaction,@ Inherited对服务进行注释测试后,TestNG单元测试无法正常工作

我正在使用TestNG测试业务服务,在春季启动应用程序中进行模拟单元测试.

应用程序是多模块弹簧启动项目.我正在为业务模块编写单元测试.

我在pom中添加了以下依赖关系测试,

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-jpa</artifactId>
   <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>${testng.version}</version>
    <scope>test</scope>
 </dependency>
 <dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <scope>test</scope>
 </dependency>
 <dependency>
     <groupId>org.hsqldb</groupId>
     <artifactId>hsqldb</artifactId>
     <scope>test</scope>
 </dependency>
 <dependency>
     <groupId>org.hibernate</groupId>
     <artifactId>hibernate-validator</artifactId>
     <scope>test</scope>
 </dependency>
 <dependency>
     <groupId>javax.el</groupId>
     <artifactId>el-api</artifactId>
     <version>${javaxel.version}</version>
     <scope>test</scope>
 </dependency>
 <dependency>
      <groupId>org.glassfish</groupId>
      <artifactId>javax.servlet</artifactId>
      <version>${javax.servlet.version}</version>
      <scope>test</scope>
 </dependency>
Run Code Online (Sandbox Code Playgroud)

我的包装器注释看起来像

@Service
@Transactional
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface MyServiceAnnotation{}
Run Code Online (Sandbox Code Playgroud)

我的TestApp看起来像

@SpringBootApplication
public class TestApp{ .... }
Run Code Online (Sandbox Code Playgroud)

我的商业服务看起来像

@MyServiceAnnotation
public class AddressServiceImpl implements AddressService {
       @Autowire
       UserDAO userDAO;
       @Autowire
       AddressDAO addressDAO;

       public Address find(int userId) …
Run Code Online (Sandbox Code Playgroud)

java testng unit-testing mockito spring-boot

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

java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;

我正在为spring数据写例子.这是我的spring.xml

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

<context:component-scan base-package="com.currencyconverter.entity" />

<bean
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="database.properties" />
</bean>

<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${driver.name}" />
    <property name="url" value="${database.url}" />
    <property name="username" value="${database.username}" />
    <property name="password" value="${database.password}" />
</bean>

<bean id="currencyRateImpl" class="com.currencyconverter.dao.CurrencyRateImpl">
    <property name="dataSource" ref="dataSource" />
</bean>


<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" value="com.currencyconverter.entity" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
    </property>
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.hbm2ddl.auto">create-drop</prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
        </props>
    </property>
</bean>
<bean id="transactionManager" …
Run Code Online (Sandbox Code Playgroud)

java spring jpa spring-data

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

HashSet vs TreeSet vs LinkedHashSet基于添加重复值

我学习Java核心的心脏即Collections.我想知道,当我们在添加重复元素什么内部发生HashSet,TreeSet,LinkedHashSet.

天气条目被替换,忽略或抛出异常并且程序终止.还有一个子问题是,哪一个操作具有相同或平均的时间复杂度

非常感谢您的回复.

java collections set

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

在mysql的单个查询中删除数据库中的所有表

是的我已经搜索过这个,但在单个查询中得到了解决方案.

在单个查询中从数据库MySQLdrop all tables(NOT TRUNCATE)的任何解决方案.

mysql

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

处理QueryDSL中的可选参数

我在SpringData中使用QueryDSL.我有表说,Employee我已经创建了实体类说,EmployeeEntity 我已经编写了以下服务方法

public EmployeeEntity getEmployees(String firstName, String lastName)
{
    QEmployeeEntity employee = QEmployeeEntity.employeeEntity;
    BooleanExpression query = null;
    if(firstName != null)
    {
        query = employee.firstName.eq(firstName);
    }
    if(lastName != null)
    {
        query = query.and(employee.lastName.eq(lastName)); // NPException if firstName is null as query will be NULL
    }
    return empployeeDAO.findAll(query);
}
Run Code Online (Sandbox Code Playgroud)

如上所述我评论了NPException.如何使用Spring数据在QueryDSL中使用QueryDSL作为可选参数?

谢谢 :)

java querydsl spring-data

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

使用@ javax.validation.constraints.Digits检查bigdecimal在精度之后是否只有2位数

我有以下课程.

Class Item {

   private BigDecimal amount;

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

我如何可以验证,它应该精度后只包含两个数字.即

2.19是正确的

2.292不正确

使用注释@javax.validation.constraints.Digits 以及如何显示自定义错误消息?

谢谢 :)

java annotations bigdecimal

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

为基于oneTomany关系的查询编写queryDSL谓词查询

我使用的是spring-data,QueryDSL和MySQL.

问题的主要目的是知道如何以queryDSL方式进行这样的查询.给出的例子只是一个提供想法的简单例子.

比如说,有两个表Employee和Certificate.两者之间的关系是ONE(员工)到MANY(证书)

以下是表格,

Employee (id, first_name, last_name);
Certificate (id, name, date, fk_emp);
Run Code Online (Sandbox Code Playgroud)

QueryDSL谓词应该是什么

返回名称中包含的所有员工(在first_name和last_name中)以及从日期为22-12-2014到22-12-2015之间的认证结果

我尝试了但是无法获得如何以QueryDSL方式迭代每个员工的每个证书并返回员工列表.

您的回复将受到高度赞赏!

编辑

以下是实体,

@Entity
@Table(name = "EMPLOYEE")
class Employee {
  @Id
  @Column(name = "ID")
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Integer id;

  @Column(name = "FIRST_NAME")
  private String firstName;

  @Column(name = "LAST_NAME")
  private String lastName;

  @OneToMany(mappedBy = "employee", cascade = CascadeType.ALL)
  private List<Certificate> certificates = new ArrayList<>();
}

@Entity
@Table(name = "CERTIFICATE")
class Certificate {
  @Id
  @Column(name = "ID")
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Integer id;

  @Column(name = …
Run Code Online (Sandbox Code Playgroud)

mysql querydsl spring-data

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

如何在Hibernate 4.3中配置二级缓存

我已阅读与此相关的帖子,但没有得到任何答案为我工作.我配置second level cacheHibernate v4.3.,我已经使用MySQL 5.0

我写过以下内容 hibernate.cfg.xml

<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
Run Code Online (Sandbox Code Playgroud)

我已经为缓存注释了我的Entity类,如下所示

@Entity 

@Cache(usage = CacheConcurrencyStrategy.READ_ONLY)
public class Employee { ....}
Run Code Online (Sandbox Code Playgroud)

运行时会显示以下异常

INFO: HHH000397: Using ASTQueryTranslatorFactory
Exception in thread "main" org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.cache.spi.RegionFactory]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:233)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:197)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:295)
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2442)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2438)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1855)
    at com.example.hibernate.Hibernate4Main.main(Hibernate4Main.java:32)
Caused by: org.hibernate.HibernateException: could not instantiate RegionFactory [org.hibernate.cache.ehcache.EhCacheRegionFactory]
    at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:101)
    at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:46)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:83)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:223)
    ... 7 more
Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: …
Run Code Online (Sandbox Code Playgroud)

java hibernate second-level-cache

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

在spring boot中使用testNG进行单元测试需要时间来构建项目

我在spring-boot中创建了一个Web应用程序.我正在使用testNG为我的业务层编写单元测试.

我创建了Application类

@SpringBootApplication
public class TestApplication
{
    public static void main(String[] args)
    {
        SpringApplication.run(TestApplication.class, args);
    }

    @Bean
    Mapper mapper()
    {
        List<String> mappingFiles = new ArrayList<String>();
        mappingFiles.add("dozer-mappings.xml");
        return new DozerBeanMapper(mappingFiles);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的测试类看起来像

@ContextConfiguration(classes = { TestApplication.class })
public class CommissionRuleServiceTest extends AbstractTestNGSpringContextTests
{
     @InjectMocks
     @Autowired
     MyService

     @Mock
     MyDAO;

     @BeforeMethod
     public void initMock()
     {
          MockitoAnnotations.initMocks(this);
     }

     @Test(dataProvider = "....")
     ......
     ......
}
Run Code Online (Sandbox Code Playgroud)

当我运行项目时,它会显示休息登录控制台,只需几次小测试就需要20.00秒.日志中的一些陈述是,

DEBUG oscisPathMatchingResourcePatternResolver - 搜索目录DEBUG oscaConfigurationClassPostProcessor DEBUG oscaClassPathBeanDefinitionScanner DEBUG oscisPathMatchingResourcePatternResolver DEBUG osbfsDefaultListableBeanFactory DEBUG oacbconverters.ArrayConverter DEBUG org.dozer.loader.xml.XMLParser DEBUG org.hibernate.cfg.SettingsFactory DEBUG …

java performance testng spring-boot

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