我刚刚开始研究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)
提前致谢!
我一直在使用带有spring-data的RESTful web服务.几天前,发布了一个特殊的spring-data jpa REST框架.
现在我注意到在这个框架中使用@Version的能力.此版本是由自己生成还是您需要手动执行此操作?
它可以自己使用@Version吗?(这样我就不必将任何内容更改为现有的存储库/域等...)
我是否需要做一些额外的配置才能使用@Version?
我一直在讨论这个问题已经有一段时间了,并且无法解决这个问题.
采取以下案例:
我公司有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) 我正在开发一个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)
这是要走的路吗?或者我完全以错误的方式看待它.
谢谢!
我刚开始用 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 ×5
spring ×3
hibernate ×2
jpa ×2
spring-data ×2
annotations ×1
foreign-keys ×1
junit ×1
mysql ×1
scoring ×1