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

我可以像下面这样初始化isActive,其目的是 's flag 由's flag初始化ProjectProjectArtist

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

定义成员的顺序是否总是Project会导致isActive错误?

4

1 回答 1

1

与该声明:

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

isActive 将始终为 false,因为 Artist 和 isActive 都将在 Project 的默认构造函数之前初始化。所以artist被初始化为null,然后isActive被初始化为false(因为getArtist()为null),然后Project的默认构造函数运行(但是构造函数什么都不做),所以isActive总是false。

于 2012-08-08T11:59:18.483 回答