我的应用程序中有一个Book model类,它如下所示:
@Entity
public class Book extends PanacheEntity{
public String title;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
@QuarkusTest
public class GreetingResourceTest {
@Test
@Transactional
public void testBookEndpoint() {
Book book= new Book();
book.title="Quarkus is awesome";
book.persistAndFlush();
assertTrue(book.isPersistent());
given()
.when().get("/hello/"+book.id)
.then()
.statusCode(200)
.body(is("Quarkus is awesome"));
}
}
@Path("/hello")
public class GreetingResource {
@GET
@Path("/{id}")
@Produces(MediaType.TEXT_PLAIN)
public String getBook(@PathParam("id") Long id) {
Book book=Book.findById(id);
return book.title; //NullPointerException. Book cannot be found
}
}
book.findbyid(id)
返回NULL。为什么?
这一问题是由于交易的可见性所引起的。虽然存在对Book.PersistandFlush()
的调用,但包装public void testBookEndpoint()
的事务尚未提交。因此,对于公共字符串getBook(@PathParam(“id”)Long id)
中的事务来说,新的账本还不可见。
您需要确保在测试restendpoint之前提交了插入账本的事务,以确保新账本在数据库中对检索它的rest调用可见,例如。
@QuarkusTest
public class GreetingResourceTest {
static Book book;
@BeforeAll
@Transactional
public static void setupEntities(){
book = new Book();
book.title="Quarkus is awesome";
book.persistAndFlush();
assertTrue(book.isPersistent());
}
@Test
public void testBookEndpoint() {
given()
.when().get("/hello/"+book.id)
.then()
.statusCode(200)
.body(is("Quarkus is awesome"));
}
}
我创建了一个基本的Spring MVC / JPA / Hibernate应用程序。我试图保存一个UserProfile实体来测试我是否真的可以持久化它,但是什么也没有保存,也没有抛出异常。 在控制器方法中,我创建了一个简单的UserProfile(这是一个@Entity),并将其发送到服务方法。类使用 @Service 对类进行批注,并使用 @Transactional 对 addUserPro
我在使用JPA时遇到了一些困难。我没有得到任何异常,但我不能保存任何东西到数据库。我从Hibernate到Jpa,在那里一切都工作得很好。下面是我的文件 Application.Properties: 存储库: 服务: 我在提交表单时得到了200的响应,但在数据库中找不到数据
我正试图让我的头绕过DDD,但我卡住了。这就是我如何设置我的项目: 然后,我继续实现UserRepository,这里我遇到了另一个问题:UserRepository接口需要域用户模型,当我试图在DAL中实现接口时,我需要使用域用户模型来实现它,这导致DAO是为域模型而不是DAL模型创建的,这没有任何意义。唯一能修正的就是在域层中引用DAL,这是错误的。 有人能解释一下我在DDD中遗漏了什么吗?
我目前正在尝试使用spring数据存储库删除我的一些实体。delete调用工作时没有任何异常/错误消息,但之后不会删除实体。 这些是我的实体: 而且 存储库非常简单: delete调用类似于 有什么想法为什么这个变化没有反映在数据库中吗? 编辑1: 我找到了变通办法,但我还是不明白真正的问题是什么。如果我像这样删除帖子(有几个例外,因为违反了约束,但帖子仍然会被删除),它就“起作用”了: 编辑2:
我希望像查询NodeEntity一样查询RelationshipEntity。 软件包信息: 此存储库不工作。 getEmployeeWorkingOnProject(String,String)返回NULL 我在关键字之后进行了修改,例如将其从修改为像这样的别名,并且还尝试更改了返回中别名的顺序。 我希望获得与特定员工和特定项目相关联的所有状态(边缘)。 或 或其他类型的类似结果,其中关系实体持
在我的项目中,我使用类型A的对象,它与类型B的对象具有一个关系(orphanremove=true,cascade=cascadetype.all,fetch=fetchtype.eagery)。我需要SpringDataRest(SDR)使用单个POST请求存储完整的A对象及其B对象(子对象)。我尝试了SDR中的几种组合,对我来说唯一有效的组合是为对象A创建@repositoryrestreso