2012-08-08 64 views
0
@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; 
} 

我可以初始化在ProjectisActive就像为了证明Project国旗

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

的标志得到由Artist初始化“以下在Project中定义成员的顺序是否会导致isActive始终为假?

回答

1

与声明:

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

的isActive将永远是假的,因为这两个艺术家和isActive将为项目的默认构造函数之前进行初始化。因此,艺术家被初始化为null,然后isActive被初始化为false(因为getArtist()为null),那么Project运行的默认构造函数(但构造函数什么也不做),所以isActive总是为false。