用另一个人初始化一个班级成员

时间:2012-08-08 11:40:03

标签: java initialization default

@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;
}

我可以在isActive中初始化Project,如下所示,意图Project的旗帜由Artist的旗帜初始化

private Boolean isActive = ((getArtist()!=null)? getArtist().getIsActive(): false);

Project中定义成员的顺序是否会导致isActive始终为假?

1 个答案:

答案 0 :(得分:1)

声明:

private Boolean isActive = ((getArtist()!=null)? getArtist().getIsActive(): false);

isActive将始终为false,因为artist和isActive将在Project的默认构造函数之前初始化。因此,将artist初始化为null,然后将isActive初始化为false(因为getArtist()为null),然后Project的默认构造函数运行(但构造函数不执行任何操作),因此isActive始终为false。