我有父实体和子实体之间的@OneTo众多
和@ManyToOne
关系。
@Entity
@Table(name = "parent")
public class Parent {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@OneToMany(targetEntity=Measurement.class, mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
@JsonManagedReference
private List<Child> children = new ArrayList<>();
}
我有这样的孩子
@Entity
@Table(name = "child")
public class Child {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne(targetEntity=Parent.class, fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id")
@JsonBackReference
private Parent parent;
保存此数据后,数据库看起来如下所示,
Parent:
id
1
Child
id parent_id
2 1
我的问题是,为什么child的主键是2而不是1?在子表中,主键可以是1,外键对父表的引用可以是1。当我再添加一个父项时,表如下所示,
Parent:
id
1
3
Child
id parent_id
2 1
4 3
是我做错了什么,还是这是我预期的行为?
生成策略@GeneratedValue(策略=GenerationType. AUTO)
将从默认的Hibernate序列
中获取值,因此相同的序列用于所有键生成。
当您插入数据时,它会以先父后子的顺序插入数据,因为它从同一序列生成器中获取值,所以它会按顺序增加所有表的值。
您需要使用GenerationType。身份
符合您的目的的策略。
在父母中
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
在儿童时期
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
我正试图让我的头绕过DDD,但我卡住了。这就是我如何设置我的项目: 然后,我继续实现UserRepository,这里我遇到了另一个问题:UserRepository接口需要域用户模型,当我试图在DAL中实现接口时,我需要使用域用户模型来实现它,这导致DAO是为域模型而不是DAL模型创建的,这没有任何意义。唯一能修正的就是在域层中引用DAL,这是错误的。 有人能解释一下我在DDD中遗漏了什么吗?
因为我是个新手,我的问题可能很简单。我搜索了一下,但没有找到一个令人信服的答案。在开发REST API时,API的目的是从现有的学生中创建一个玩家团队。POST方法,从现在开始,请求正文将保存请求正文中的学生ID(主键)。 在访问REST API时,请求主体是否可以包含表主键?
问题内容: 我正在尝试从现有的空数据库中生成symfony2中的实体(相当大,从头开始创建实体确实很痛苦)。不幸的是,我遇到了很大的问题。 当我尝试调用以下命令时(在Windows上如果发生任何更改): 我收到以下消息: 没有要处理的元数据类。 发布之前,我已经: 验证我的配置正常(我可以连接到数据库), 我的捆绑软件已创建,上面指定的路径有效 当我尝试转换为xml / yml时,与尝试生成注释映
我是Hibernate的新手,并要求使用具有这些列的表的数据库 表:TBL _ product//库存项目列表< br >列:< br > key _ product < br > key _ category < br > fld _ product _ name < br > fld _ Inventory _ qty < br > fld _ unit _ price < br > fld
问题内容: 在Spring MVC中使用PropertyEditor时,让它们从数据库中获取实体是否不好?我应该改为创建一个空实体并设置其ID。 例如,实体Employee: 使用以下GenericEntityEditor在下面的PropertyEditor中获取Entity是一个坏主意: 可以绑定在控制器中: 是否更喜欢对EmployeeEditor使用更具体的方法,并使其仅实例化Employe
我有生成Hibernate实体的mysql db,现在我需要从这些实体生成内存数据库进行测试。我在试图运行我的单元测试时遇到了这个错误。 /***主]o.h.发动机。jdbc。spi。SqlExceptionHelper:SQL错误:42102,SQLState:42S02 2016-02-16 18:10:47.864错误29758---[main]o.h.engine。jdbc。spi。Sql