例如,考虑下面的代码,当父级不引用子级,但子级可以引用父级的id时,子级不关心实际的父级字段,如名称。
@Entity
class Parent {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column
String name;
}
@Entity
class Child {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column
String name;
// 1. For simplicity, a child can have only one parent
// 2. Reference just the parent id - don't care about the parent's fields
@JoinColumn(table = "parent", referencedColumnName = "id")
long parentId;
}
字符串
所以现在,当我插入一个子对象时,没有先插入一个父对象,我不会得到任何“foreign key constraint violation”或spring定义的“DataIntegrityViolationException”。插入示例:
repo.save(new Child("no_god?"));
型
也试过foreignKey = @ForeignKey(ConstraintMode.CONSTRAINT)
。
当我在child上定义一个完整的@ManyToOne(optional = false)
+在parent上定义@OneToMany
时,它可以工作,但我想使用一个简单的id关系-而不是完整的对象。
如何使外键约束与简单的id引用定义一起工作?
1条答案
按热度按时间h6my8fg21#
如果您只想让JPA创建您的EJB,但不想Map它们,您可以指定它
字符串
您需要通过数据库特定的SQL类型和约束语法来指定它。