国内特效网站,河南郑州天气预报15天,wordpress 添加 联系我们,深圳网站建设优化服务Spring boot 3
JPA中#xff0c;遇到一个需求#xff0c;建一个数据字典表#xff1a; Dictionary#xff0c;存放两级数据#xff0c;第一级为字典项目#xff0c;第二级为项目内容#xff0c;查询时要把parent_id对应父项的名称也一起查出来#xff0c;返回前端。
…Spring boot 3
JPA中遇到一个需求建一个数据字典表 Dictionary存放两级数据第一级为字典项目第二级为项目内容查询时要把parent_id对应父项的名称也一起查出来返回前端。
表字段如下
Id
GeneratedValue(strategy GenerationType.IDENTITY)
private Long id;Column(name parent_id, nullable false, columnDefinitionbigint default 0 COMMENT 父ID)
private Long parent_id;Column(namename,nullable false, columnDefinitionvarchar(255) default COMMENT 名称)
private String name;
这个地方如果用php来写直接在查询的时候 left join下自己设置下on再用select把查出来的父name as成 parent_name就行了。
返回数据如下 用java就没这么简单了。比如JPA中需要设置一个关联关系
ManyToOne
JoinColumn(name parent_id, referencedColumnName id, insertable false, updatable false)
private Dictionary parent;
parent_id关联到自身的主键id但是启动项目的时候报错了如下
Cannot add or update a child row: a foreign key constraint fails (overs.#sql-1_3246, CONSTRAINT FK2gu2f0u63oqtk84hlnpoj3h92 FOREIGN KEY (parent_id) REFERENCES dictionary (id))
搜索下有很多种原因其中一种大致意思是外键字段必须可为空并且记录里该字段不能保存相同的值除了NULL。
其它原因对照了下都没问题就这一条不对于是修改了字段类型并且清空了表里面确实有几条记录parent_id 存的都是0重复了。
Column(name parent_id, columnDefinitionbigint default NULL COMMENT 父ID)
private Long parent_id;
项目再启动就正常了。
查询的返回结构如下 说回PHPLaravel也可以设置关联状态如下 这样就跟JPA一样了查询返回结构如下 LARAVEL是不是跟JAVA越来越像了呵呵 -完-