jpa 常用注解说明

在hibernate 中使用Jpa所需的三个Jar包

hibernate-annotations.jar

hibernate-commons-annotations.jar

ejb3-persistence.jar

/权限与操作的多对一

@ManyToOne

@JoinColumn(name="opt_id")

private Operation operation;

//操作和权限的一对多

@OneToMany(mappedBy="operation")

@JoinColumn(name="opt_id")

private Set<Privilege> priSet;

hibernate 两身边一对多

多端引用一端的一个实体

一端引用多端的一个集合

关系在多端多加一个外键引用一端所以@JoinColumn(name="一端的id")

//角色与用户的多对多

@ManyToMany

@JoinTable(name="user_role",

joinColumns={@JoinColumn(name="role_id")},

inverseJoinColumns={@JoinColumn(name="user_id")})

@OrderBy("id desc")

private Set<User> userSet;

//用户与角色的多对多

@ManyToMany

@JoinTable(name="user_role",

joinColumns={@JoinColumn(name="user_id")},

inverseJoinColumns={@JoinColumn(name="role_id")})

private Set<Role> roleSet;

@Entity                                  实体

@Table(name="user")           表

@Id                                        id
@GeneratedValue                  可以不写   
@GeneratedValue(strategy=GenerationType.AUTO)    自增长
private Long id;                     
@Version                               版本号
@Basic                                   基本数据
@Coloum(name="")               重命名          
在hibernate 中  sessionFactory 的实现类中提供成hibernate 所支持的注解形式
<!-- hibernate的sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
</bean>     
在hibernate.cfg.xml 配置每一个实体类的对应关系如下
<mapping class="com.wlzx.domain.Coloum" /> 指到类下即可

 JPA 下复合主键的生成和使用

 

@Embeddable
public class VscancelserialnoId implements java.io.Serializable {
	private static final long serialVersionUID = 1L;

	private String cancelid;
	private Integer serialNo;

	public VscancelserialnoId() {
	}

	@Column(name = "cancelid")
	public String getCancelid() {
		if (this.cancelid == null)
			return null;
		return this.cancelid.trim();
	}

	public void setCancelid(String cancelid) {
		this.cancelid = cancelid;
	}

	@Column(name = "serialno")
	public Integer getSerialNo() {
		return this.serialNo;
	}

	public void setSerialNo(Integer serialNo) {
		this.serialNo = serialNo;
	}}


 

@Entity
@Table(name = "vscancelserialno")
public class Vscancelserialno implements java.io.Serializable {
	private static final long serialVersionUID = 1L;

	/** 顺序号 */
	private VscancelserialnoId id;
	/**
	 * 顺序号
	 */
	@EmbeddedId
	@AttributeOverrides( {
			@AttributeOverride(name = "cancelid", column = @Column(name = "cancelid")),
			@AttributeOverride(name = "serialNo", column = @Column(name = "serialno")) })
	public VscancelserialnoId getId() {
		return this.id;
	}


说明:首先把一个复合主键定义成一个实体用@Embeddable标注,在另外一个实体在对这个实体标注引用,引用方式见上,以后在hql 代码写需要先通过id 然后才可以获取到具体的复合主键属性。

原文地址:https://www.cnblogs.com/java20130726/p/3218414.html