@Entity
@Table(name = "artist")
public class Artist implements java.io.Serializable{
@Basic
@Column(name = "is_active",nullable=false)
private Boolean isActive = false;
@OneToMany(mappedBy = "artist", cascade = {CascadeType.ALL}, fetch = FetchType.LAZY)
private Set<Project> projects= new HashSet<Project>();
}
和
@Entity
@Table(name = "project")
public class Project implements java.io.Serializable{
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "artist_id")
private Artist artist;
@Basic
@Column(name = "is_active",nullable=false)
private Boolean isActive = false;
}
我可以像下面这样在 Project
中初始化 isActive
吗,目的是让 Project
的标志由 Artist
初始化> 的旗帜
private Boolean isActive = ((getArtist()!=null)? getArtist().getIsActive(): false);
Project
中定义成员的顺序是否会导致 isActive
始终为 false?
最佳答案
带有该声明:
private Boolean isActive = ((getArtist()!=null)? getArtist().getIsActive(): false);
isActive 将始终为 false,因为艺术家和 isActive 都将在 Project 的默认构造函数之前初始化。因此,artist 被初始化为 null,然后 isActive 被初始化为 false(因为 getArtist() 为 null),然后 Project 的默认构造函数运行(但构造函数不执行任何操作),因此 isActive 始终为 false。
关于java - 用另一个类成员初始化一个类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11863720/