• 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 然后才可以获取到具体的复合主键属性。

  • 相关阅读:
    df值自由度学习[转载]
    调用sklearn包中的PLA算法[转载]
    箱线图+小提琴图学习[转载]
    P1616 疯狂的采药 洛谷
    P1164 小A点菜 洛谷
    【noip模拟赛3】确定的位置 (map的遍历 位置原理)
    【noip模拟赛1】古韵之鹊桥相会(最短路)
    【noip模拟赛3】贾老二的工件 (模拟)
    【noip模拟赛1】古韵之乞巧 (dp)
    【noip模拟赛3】拣钱
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218414.html
Copyright © 2020-2023  润新知