小编Nei*_*ton的帖子

Git 忽略不忽略文件夹 **META-INF**

我正在将 git 与源树应用程序一起使用,我想忽略文件夹文件META-INF的内容,例如文件persistence.xml

workspace\Data\src\META-INF\persistence.xml
Run Code Online (Sandbox Code Playgroud)

我把路径放在.gitignore文件中

#Ignore META-INF 
*/*/src/META-INF/* 
Run Code Online (Sandbox Code Playgroud)

但是 git 没有忽略该文件,如何忽略此文件夹META-INF 中的所有文件

java git

4
推荐指数
2
解决办法
3557
查看次数

服务层应该写哪些方法?

我尝试按照有关 Spring MVC 的教程进行操作。教程中有UserDao接口(使用的是Spring Data JPA)

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

还有 UserService 和 UserServiceImpl

public interface UserService {
    void save(User user);

    User findByUsername(String username);
}

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    @Autowired
    private RoleDao roleDao;

    @Autowired
    private BCryptPasswordEncoder bCryptPasswordEncoder;

    @Override
    public void save(User user) {
        user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
        Set<Role> roles = new HashSet<>();
        roles.add(roleDao.getOne(1L));
        user.setRoles(roles);
        userDao.save(user);
    }

    @Override
    public User findByUsername(String username) {
        return userDao.findByUsername(username);
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 为什么save方法在Service层而不是dao层?我读到所有 CRUD 操作都应该在 …

java spring spring-mvc service-layer spring-data-jpa

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

JpaRepository findAll()返回空结果

JpaRepository findAll()方法返回空结果。我正在尝试通过使用Spring-boot,h2数据库和jpa来实现rest服务。

这是我的 schema.sql

CREATE TABLE IF NOT EXISTS `City` (
  `city_id` bigint(20) NOT NULL auto_increment,
  `city_name` varchar(200) NOT NULL,
PRIMARY KEY (`city_id`));
Run Code Online (Sandbox Code Playgroud)

我的data.sql文件包括:

INSERT INTO City (city_id,city_name) VALUES(1,'EDE');
INSERT INTO City (city_id,city_name) VALUES(2,'DRUTEN');
INSERT INTO City (city_id,city_name) VALUES(3,'DELFT');
Run Code Online (Sandbox Code Playgroud)

City实体:

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "City")
public class City {

  @Id
  @GeneratedValue
  @Column(name = "city_id")
  private Long cityId;

  @Column(name = "city_name")
  private String cityName;

  public Long getCityId() …
Run Code Online (Sandbox Code Playgroud)

java spring h2 spring-data-jpa

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

用于在SQL中请求随机行的相应Spring JPA方法名称

为了使用,在SQL表中获取一条记录name,我使用以下查询:

SELECT * FROM User WHERE User.name = name;
Run Code Online (Sandbox Code Playgroud)

相应的Spring JPA方法名称如下:

UserEntity findUserByName(@Param("name") String name);
Run Code Online (Sandbox Code Playgroud)

我的问题如下:

如何从SQL表中请求随机记录?
我知道我的SQL查询应该是以下内容:

SELECT * FROM User
ORDER BY RAND()
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

但是,与此相对应的Spring JPA方法名称应该是什么?

UserEntity findUserXXXXXXX (XXXXXXX);
Run Code Online (Sandbox Code Playgroud)

java spring hibernate jpql spring-data-jpa

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

Spring Data JPA自定义查询限制功能无法正常工作

我创建了一个自定义查询

@Repository
public interface SecurityQuestionRepository extends JpaRepository<SecurityQuestion, Integer>{

    @Query("select q from SecurityQuestion q order by q.questionId asc limit 0, 3 ")
    public List<SecurityQuestion> findQuestion();

}
Run Code Online (Sandbox Code Playgroud)

当我调用服务并调用公共List<SecurityQuestion> findQuestion()方法limit 0,3不起作用

这是休眠日志,

Hibernate: select securityqu0_.question_id as question1_4_, securityqu0_.question_desc as question2_4_ from user_security_question securityqu0_ order by securityqu0_.question_id asc
Run Code Online (Sandbox Code Playgroud)

如何使此限制功能在此工作?

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

4
推荐指数
2
解决办法
5512
查看次数

如何将LocalContainerEntityManagerFactoryBean设置为JpaTransactionManager?

在春季的官方文档中,其内容如下

@Bean
  public LocalContainerEntityManagerFactoryBean entityManagerFactory() {

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setGenerateDdl(true);

    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setPackagesToScan("com.acme.domain");
    factory.setDataSource(dataSource());
    return factory;
  }

  @Bean
  public PlatformTransactionManager transactionManager() {

    JpaTransactionManager txManager = new JpaTransactionManager();
    txManager.setEntityManagerFactory(entityManagerFactory());
    return txManager;
  }
Run Code Online (Sandbox Code Playgroud)

重要的是创建LocalContainerEntityManagerFactoryBean而不是直接创建EntityManagerFactory,因为前者除了简单地创建EntityManagerFactory之外,还参与异常转换机制。

但是当我尝试使用它时,我得到了错误:

setEntityManagerFactory
(javax.persistence.EntityManagerFactory)
in JpaTransactionManager cannot be applied
to
(org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean)
Run Code Online (Sandbox Code Playgroud)

这是我的进口:

import org.apache.tomcat.jdbc.pool.DataSourceFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.sql.DataSource;
Run Code Online (Sandbox Code Playgroud)

java spring hibernate spring-data-jpa

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

Spring JPA 方法查找具有 beforeAndEqual 日期和 afterAndEqual 日期的实体

我有一个实体锦标赛如下:

class Tournament {
    //other attributes
    private LocalDate startDate;
    private LocalDate endDate;
}
Run Code Online (Sandbox Code Playgroud)

这代表从开始日期到结束日期持续几天/几个月的锦标赛。我需要检索今天运行的所有锦标赛,例如startDate <= Today && endDate >= Today,使用 Spring JPA 和分页。

我发现的最接近的如下:

@Repository
public interface TournamentRepository extends PagingAndSortingRepository<Tournament, Long> {

    Page<Tournament> findByStartBeforeAndEndAfter(LocalDate date, LocalDate dateCopy, Pageable page); //today's date is passed as date and dateCopy

}
Run Code Online (Sandbox Code Playgroud)

方法调用:

tournamentRepository.findByStartBeforeAndEndAfter(LocalDate.now(), LocalDate.now(), page);
Run Code Online (Sandbox Code Playgroud)

这可以解释为startDate < Today && endDate > Today,因此如果锦标赛在今天运行且仅持续 1 天,则该方法不起作用。

有没有更好的方法使用 Spring JPA 来执行此操作,而无需编写自定义查询?

java spring hibernate spring-mvc spring-data-jpa

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

Spring Data和MongoDB存储库 - 如何创建更新查询?

我有以下jpa存储库:

   @Query("UPDATE PlayerAccount pa SET pa.password = ?3 WHERE pa.id = ?1 AND pa.password = ?2")
   @Modifying
   public int updatePasswordWithValidation(Long playerAccountId, String oldPasswordDB, String encodePassword);
Run Code Online (Sandbox Code Playgroud)

现在,我想为mongoDB存储库实现类似的更新查询:

@Query("update( { _id: ObjectId(' $1 ') }, { $set: { messageStatus: $2} })")
Run Code Online (Sandbox Code Playgroud)

但它不起作用.任何有关自定义mongo存储库更新如何显示的参考?

谢谢

java spring mongodb spring-data spring-data-mongodb

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

使用Ebean查询原始SQL时如何映射结果

使用Ebean创建的Postgres表,我想用手写的语句查询这些表:

SELECT r.name,
       r.value,
       p.name as param1,
       a.name as att1,
       p2.name as param2,
       a2.name as att2
FROM compatibility c
JOIN attribute a ON c.att1_id = a.id
JOIN attribute a2 ON c.att2_id = a2.id
JOIN PARAMETER p ON a.parameter_id = p.id
JOIN PARAMETER p2 ON a2.parameter_id = p2.id
JOIN rating r ON c.rating_id = r.id
WHERE p.problem_id = %d
  OR p2.problem_id = %d
Run Code Online (Sandbox Code Playgroud)

每个连接表代表我的一个模型类.查询执行正常,但我不知道如何继续:

我如何使用Play 2.2执行查询.和Ebean?如何将此查询映射到可迭代对象?我是否需要创建一个包含查询中所有字段的Model类,还是可以使用某种HashMap?如何以安全的方式参数化查询?

java sql postgresql ebean

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

使criteria.add(Restrictions.sqlRestriction())sql注入证明

民间,

我在休眠3中建立一个标准,如下所示。这是SQL注入证明?

criteria
    .add(
         Restrictions.sqlRestriction(
            "to_char(createDate,'mm/dd/yyyy') like '%" + dateString + "%'"),
         StandardBasicTypes.STRING);
Run Code Online (Sandbox Code Playgroud)

我在想的另一个选项是将dateString转换为日期并转换为此

criteria.add(Restrictions.eq(createDate, dateObjCreatedFromString)
Run Code Online (Sandbox Code Playgroud)

sql hibernate

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