配置Weapon.java,代码如下:
package com.hibernate.annotations.entity; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EntityResult; import javax.persistence.FieldResult; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedNativeQuery; import javax.persistence.NamedQuery; import javax.persistence.SequenceGenerator; import javax.persistence.SqlResultSetMapping; import javax.persistence.Table; @Entity @Table(name = "WEAPON") //通过注解的方式使用命名查询 @NamedQuery(name = "namedQuery",query="from Weapon where id < :id") //通过注解的方式使用本地查询 @SqlResultSetMapping(name = "all_fields",entities={ @EntityResult(entityClass= com.hibernate.annotations.entity.Weapon.class, fields={ @FieldResult(name = "id",column="ID"), @FieldResult(name = "name",column="NAME"), } ) } ) @NamedNativeQuery(name = "nameeNativeQuery", query = "select * from WEAPON where id < :id", resultSetMapping="all_fields") public class Weapon { @SequenceGenerator(name = "seq",allocationSize = 1,initialValue = 1,sequenceName = "seq_weapon_pk") @Id @Column(name = "ID") @GeneratedValue(strategy=GenerationType.SEQUENCE,generator = "seq") private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
关于注解的测试举例,TestAnnotations.java,代码如下:
package com.hibernate.annotations.entity; import java.util.Iterator; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.AnnotationConfiguration; public class TestAnnotations { public static AnnotationConfiguration config = new AnnotationConfiguration(); public static SessionFactory sessionFactory ; public static String config_file = "/hibernate.cfg.xml"; public static void main(String[] args) { // annotationTest1(); // annotationTest2(); annotationTest3(); } public static void annotationTest1(){ //获得配置文件信息 config.configure(config_file); //创建session工厂 sessionFactory = config.buildSessionFactory(); //创建Session对象(注意:正常开发环境下,应该优先当前进程中的session) Session session = sessionFactory.openSession(); //开启事务 Transaction tran = session.beginTransaction(); Weapon weapon = new Weapon(); weapon.setName("屠鹰刀"); session.save(weapon); tran.commit(); session.close(); } //使用命名查询进行数据查询 public static void annotationTest2(){ //获得配置文件信息 config.configure(config_file); //创建session工厂 sessionFactory = config.buildSessionFactory(); //创建Session对象(注意:正常开发环境下,应该优先当前进程中的session) Session session = sessionFactory.openSession(); Query query = session.getNamedQuery("namedQuery"); query.setParameter("id", 100); List<Weapon> list = query.list(); Iterator<Weapon> it = list.iterator(); while(it.hasNext()){ Weapon w = it.next(); System.out.println(w.getId() + "\t" + w.getName()); } session.close(); } //使用本地查询进行数据查询 public static void annotationTest3(){ //获得配置文件信息 config.configure(config_file); //创建session工厂 sessionFactory = config.buildSessionFactory(); //创建Session对象(注意:正常开发环境下,应该优先当前进程中的session) Session session = sessionFactory.openSession(); Query query = session.getNamedQuery("nameeNativeQuery"); query.setParameter("id", 100); List<Weapon> list = query.list(); Iterator<Weapon> it = list.iterator(); while(it.hasNext()){ Weapon w = it.next(); System.out.println(w.getId() + "\t" + w.getName()); } session.close(); } }
关于Hibernate注解的使用(命名查询 本地查询)
最新推荐文章于 2024-08-13 10:54:15 发布