srping-data-jpa 实体配置
自增ID
@Id
@GeneratedValue
@Column(name = "ID" , nullable = false)
private long id = 0;
String字段对应数据库varchar类型
@Column(name = "CName" , nullable = false , length = 50)
private String name = "";
boolean字段对应数据库bit类型
@Column(name = "OptionalMayFlag", nullable = false, columnDefinition = "bit")
private boolean optionalMayFlag = false;
大文本对应数据库longtext
@Lob
@Column(name = "Answer", nullable = false)
private String answer = null;
一对一
@OneToOne(cascade = CascadeType.ALL, optional = false)
@PrimaryKeyJoinColumn(name = "SchoolID", referencedColumnName = "ID")
private School school;
多对一
@ManyToOne(cascade = CascadeType.REFRESH, optional = true)
@JoinColumn(name = "StageID" , nullable = false)
private Stage stage;
多对多
@ManyToMany(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY)
@JoinTable(name = "t_user_subject", joinColumns = { @JoinColumn(name = "UserID", referencedColumnName = "ID") }, inverseJoinColumns = { @JoinColumn(name = "SubjectID", referencedColumnName = "ID") })
@OrderBy(value = "order")
private List<Subject> subjects = new ArrayList<Subject>();
复合主键
@Entity
@Table(name = "hw_question")
public class Question implements Serializable {
@Id
@GeneratedValue
@Column(name = "ID", nullable = false)
private long id = 0;
}
@IdClass(value=QuestionContentKey.class)
@Entity
@Table(name = "hw_questioncontent")
public class QuestionContent implements Serializable {
@Id
private Question question;
@Id
private int questionIndex = 0;
}
///
public class QuestionContentKey implements Serializable{
@ManyToOne(cascade = CascadeType.REFRESH, optional = false)
@JoinColumn(name = "QuestionID", nullable = false)
private Question question;
@Column(name = "QuestionIndex", nullable = false)
private Integer questionIndex = 0;
}