jpa一对多OneToMany关联查询;debug下lazy失效原因
Posted 好大的月亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jpa一对多OneToMany关联查询;debug下lazy失效原因相关的知识,希望对你有一定的参考价值。
jpa一对多实体类关联查询
package com.xx.xx.settings.domain;
import lombok.*;
import lombok.experimental.Accessors;
import javax.persistence.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Table(name = "config_header")
@Entity
@Getter
@Setter
@Builder
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class ConfigHeaderDO implements Serializable
private static final long serialVersionUID = 629506114082413243L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "record_type")
private String recordType;
@Column(name = "description")
private String description;
@Column(name = "status")
private Integer status;
@Column(name = "gmt_create")
private Date gmtCreate;
@Column(name = "gmt_modified")
private Date gmtModified;
@Column(name = "version")
private Integer version;
@OneToMany(fetch = FetchType.LAZY)
@JoinColumns(
@JoinColumn(name = "header_id", referencedColumnName = "id")
)
@Where(clause = "status = 1")
private List<ConfigDetailDO> configDetails;
@JoinColumn
注解name
属性就是要关联的column
是被关联表中的关联字段,referencedColumnName
属性就是本身表里去关联子表的字段;比如header
的id
和detail
中的headerId
关联,那么在header
实体类中name=headerId,referencedColumnName =id
.
debug下lazy失效原因
在idea debug模式下在实体类中使用
@OneToMany(fetch = FetchType.LAZY)
时,在get对应属性前断点,然后会发现懒加载失效了,这是因为在debug模式下,会自动进行级联查询
以上是关于jpa一对多OneToMany关联查询;debug下lazy失效原因的主要内容,如果未能解决你的问题,请参考以下文章