package corgi.spring.test_java_entity.code.entity; import com.dounine.corgi.jpa.entity.BaseEntity; import org.springframework.format.annotation.DateTimeFormat; import javax.persistence.*; import java.time.LocalDateTime; import java.util.Set; /** * Created by huanghuanlai on 16/4/28. */ @Entity @Table(name="test_user") public class User extends BaseEntity { @Column(unique = true,length = 12) private String username; private String password; @OrderBy(value = "age desc ") private Integer age; private Double money; private Float height; @DateTimeFormat(pattern="yyyy-MM-dd hh:mm:ss") private LocalDateTime accessTime = LocalDateTime.now(); /** * 只有在双向关联时才会使用mappedBy属性, * 只有OneToOne、OneToMany、ManyToMany上才有mappedBy属性,ManyToOne不存在该属性。 * 使用了mappedBy的一端称为关系目标方(被控方), * 另一端为关系拥有方(控制方)。 * 相应的对象称之为被控对象和主控对象。 */ /**一般用many to one 即可 * User类(主控方) * private UserDetails details; * @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) * @JoinColumn(name = "details_id") * @Fetch(FetchMode.JOIN) * * UserDetails类(被控方) * private User user ; * @OneToOne(mappedBy = "user", fetch = FetchType.LAZY) */ //CascadeType 级联所有,根据需要选择级联更新,级联保存,级联删除.... @ManyToOne(cascade = {CascadeType.ALL}) //多对一配置 details_id 为 外键关联id @JoinColumn(name = "details_id",nullable=false) private UserDetails details; //一对多配置 FetchType 是否懒加载, (OneToMany默认懒加载LAZY,ManyToOne为默认加载EAGER) @OneToMany(mappedBy = "user",cascade = {CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE},fetch = FetchType.EAGER) @OrderBy(value = "seq ASC") private Set<UserInterest> interests; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Double getMoney() { return money; } public void setMoney(Double money) { this.money = money; } public Float getHeight() { return height; } public void setHeight(Float height) { this.height = height; } public LocalDateTime getAccessTime() { return accessTime; } public void setAccessTime(LocalDateTime accessTime) { this.accessTime = accessTime; } public UserDetails getDetails() { return details; } public void setDetails(UserDetails details) { this.details = details; } public Set<UserInterest> getInterests() { return interests; } public void setInterests(Set<UserInterest> interests) { this.interests = interests; } }