srping-data-jpa 实体配置

本文详细解析了Spring Data JPA中实体类的配置方式,包括自增ID、字段类型映射、一对一、多对一、多对多关联及复合主键的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值