未定义约束时使用Hibernate

时间:2018-08-14 10:43:16

标签: spring hibernate spring-boot

我们需要重新设计一个应用程序,但不对数据库进行任何修改。

当前代码使用普通的jdbc查询数据。作为重新设计的一部分,我们计划实现休眠模式。

问题是当前数据库在数据库级别没有任何约束。

例如,如果有两个实体,课程和评论。当前数据库之间没有任何映射。

现在在这种情况下,如果我实现了休眠模式,并尝试在课程和复习之间使用@OneToMany,而数据库中没有这些约束,那行得通吗?

2 个答案:

答案 0 :(得分:0)

1要阻止休眠模式更改方案设置参数

spring.jpa.hibernate.ddl-auto =无

81.2 Initialize a Database Using Hibernate

2设置GeneratedValue策略以使用现有序列

@SequenceGenerator(name="my_seq", sequenceName="my_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "my_seq")
private Long id;

这样,Hibernate将不会更改您的架构中的任何内容。它不会创建任何序列,表,外键,约束等只需使用现有结构,如果出现问题,就掉下来)

答案 1 :(得分:0)

如果从CourseReview之间没有级联,而您删除了Course,则删除将毫无疑问地进行。在存在约束的情况下,DB会抱怨现有的子记录(在本例中为审阅)。

因此需要特别注意级联的确定。