我有一个带有URL的H2数据库"jdbc:h2:test".我使用创建一个表CREATE TABLE PERSON (ID INT PRIMARY KEY, FIRSTNAME VARCHAR(64), LASTNAME VARCHAR(64));.然后我使用这个(空)表选择所有内容SELECT * FROM PERSON.到现在为止还挺好.
但是,如果我将URL更改为"jdbc:h2:mem:test",唯一的区别是数据库现在只在内存中,这给了我一个org.h2.jdbc.JdbcSQLException: Table "PERSON" not found; SQL statement: SELECT * FROM PERSON [42102-154].我可能在这里遗漏了一些简单的东西,但任何帮助都会受到赞赏.
在我的项目中,我创建了3个春季启动应用程序.第一个spring启动应用程序有h2嵌入式数据库.现在我想直接从我的第二和第三个春季启动应用程序访问这个数据库,而无需编写任何服务来获取这些数据.所以有人能告诉我如何实现这一目标?
当我有用户并且他们有其他用户作为朋友时,我想制作类似于 facebook 的应用程序。所以我做了一个User与自己有 ManyToMany 关系的实体,它们也可以互相邀请到朋友列表。不幸的是,当我想获得邀请好友的用户时,我收到此错误:
Request processing failed; nested exception is org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion (StackOverflowError); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: java.util.ArrayList[0]->com.pk.thesis.devbook.models.dto.UserDTO["invitedFriends"]->java.util.ArrayList[0]->com.pk.thesis.devbook.models.dto.UserDTO["invitedFriends"]->java.util.ArrayList[0]-
... (it goes forever)
>com.pk.thesis.devbook.models.dto.UserDTO["invitedFriends"]->java.util.ArrayList[0]with root cause
Run Code Online (Sandbox Code Playgroud)
我缩短的用户实体类:
@Data
@Entity
@Table( name = "users",
uniqueConstraints = {
@UniqueConstraint(columnNames = "username"),
@UniqueConstraint(columnNames = "email")
})
@JsonIdentityInfo(generator= ObjectIdGenerators.UUIDGenerator.class, property="@id")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
@Size(max = 40)
private String username;
//other things...
@ManyToMany(fetch …Run Code Online (Sandbox Code Playgroud) 我已经在springBoot应用程序中添加了H2DB以进行单元测试。
我在application-test.properties中添加了:
spring.datasource.name = h2db
spring.h2.console.enabled = true
它的工作正常,保存值。
但是它是如何工作的以及如何浏览该数据库?
我从网上下载了一些代码并在 Eclipse 中打开它。问题是我的 Eclipse 说
导入org.h2无法解析
对于以下代码:
import org.h2.tools.Server;
Run Code Online (Sandbox Code Playgroud)
我正在学习 Java,那是一个示例代码。我使用的是jdk1.8.0_40。我清理了我的项目,但它仍然存在!