小编Byr*_*ach的帖子

如何在Spring Data中使用@Transactional?

我刚刚开始研究Spring-data,Hibernate,MySQL,JPA项目.我切换到spring-data,这样我就不用担心手工创建查询了.

我注意到@Transactional当你使用spring-data时不需要使用,因为我也在没有注释的情况下尝试了我的查询.

我应该/不应该使用@Transactional注释的具体原因是什么?

作品:

@Transactional
public List listStudentsBySchool(long id) {
    return repository.findByClasses_School_Id(id);
}
Run Code Online (Sandbox Code Playgroud)

还有效:

public List listStudentsBySchool(long id) {
    return repository.findByClasses_School_Id(id);
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

java spring jpa spring-data spring-data-jpa

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

在spring-data项目中使用@Version

我一直在使用带有spring-data的RESTful web服务.几天前,发布了一个特殊的spring-data jpa REST框架.

现在我注意到在这个框架中使用@Version的能力.此版本是由自己生成还是您需要手动执行此操作?

它可以自己使用@Version吗?(这样我就不必将任何内容更改为现有的存储库/域等...)

我是否需要做一些额外的配置才能使用@Version?

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

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

使用field_value_factor在非现有字段上进行功能评分查询

我一直在讨论这个问题已经有一段时间了,并且无法解决这个问题.

采取以下案例:

我公司有2名员工,他们有自己的博客页面:

POST blog/page/1
{
  "author": "Byron",
  "author-title": "Junior Software Developer",
  "content" : "My amazing bio"
}
Run Code Online (Sandbox Code Playgroud)

POST blog/page/2
{
  "author": "Jason",
  "author-title": "Senior Software Developer",
  "content" : "My amazing bio is better"
}
Run Code Online (Sandbox Code Playgroud)

在他们创建博客文章后,我们希望跟踪他们博客的"观点",并根据他们的"观点"推动搜索结果.

这可以通过使用功能分数查询来完成:

GET blog/_search
{
  "query": {
    "function_score": {
      "query": {
        "match": {
          "author-title": "developer"
        }
      },
      "functions": [
        {
          "filter": {
            "range": {
              "views": {
                "from": 1
              }
            }
          }, 
          "field_value_factor": {
            "field": "views"
          }
        }
      ]
    }
  }
} …
Run Code Online (Sandbox Code Playgroud)

java scoring elasticsearch

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

Hibernate,Spring和外键

我正在开发一个hibernate,spring项目来帮助我理解这两者的基础知识.我遇到了一个问题,我希望能够将外键添加到我的表中.

我一直在浏览互联网以获取有关此主题的信息,但我无法找到适合我需求的内容.

我有两节课:

 Schools
 Classes
Run Code Online (Sandbox Code Playgroud)

现在我想将主键从Schools映射到Classes.

这是我现在的代码:

@ManyToOne
@JoinColumn(name = "SCHOOL_ID", table = "SCHOOL")
private School school;
Run Code Online (Sandbox Code Playgroud)

对于我的吸气剂和二传手:

public long getSchool() {
    return school.getId();
}

public void setSchool(long schoolId) {
    this.school.setId(schoolId);
}
Run Code Online (Sandbox Code Playgroud)

这是要走的路吗?或者我完全以错误的方式看待它.

谢谢!

java spring annotations hibernate foreign-keys

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

用JPA重置MySql数据库的自增值

我刚开始用 JUnit 编写我的第一个单元测试,但遇到了一个小问题。在我的单元测试中,我将新数据插入到我的 MySql 数据库中。添加信息后,我会在下一个单元测试中删除相同的信息。

我的 table-id 是自动递增的,并且每次运行单元测试时,下一个 id 的值都会递增 1。

我用@AfterClass 注释实现了一个新方法,这样在我完成单元测试后,它会重置增量值。我使用了这个查询:

entityManager.createNativeQuery("ALTER TABLE student AUTO_INCREMENT = 1");
Run Code Online (Sandbox Code Playgroud)

如果我将新信息直接添加到 MySql 数据库中,则下一个 id 的值不是我想要的(表中的最后一个 id 值 +1)。

但是,当我直接在数据库中运行 sql-query 时,查询确实有效。

我的问题:在单元测试时是否不可能运行这些类型的查询?还是我完全看错了。

我正在使用 java、spring、hibernate、jpa、junit

提前致谢!

java mysql junit spring jpa

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