- 浏览: 686664 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (362)
- java基础 (33)
- html/css+div/javascript (17)
- Ajax/XML/JSON/XSL (7)
- JQuery (11)
- Extjs (1)
- JSP/Servlet (19)
- MVC模式 (4)
- struts 1 (17)
- Struts 2.3.4 (17)
- Spring 3.2 (26)
- Springmvc (3)
- Hibernate 4.1 (21)
- ibatis (6)
- Velocity模板语言 (2)
- Rose框架 (5)
- EJB (1)
- JUnit测试 (2)
- 数据库DB (24)
- 重构 / 设计模式 (3)
- 开发工具IDE (37)
- 数据结构与算法设计 (3)
- Android (12)
- Linux (4)
- bug集合 (29)
- 缓存技术(redis) (3)
- Lucene全文索引 (15)
- maven3.0.5 (4)
- 小工具集合 (18)
- 面试题 (5)
- 闲聊 (11)
- 其他 (4)
- 接口API (2)
- work (2)
- Flex (0)
- JMS (1)
- 开源项目集合 (1)
- 技术博客 (1)
- 分类04 (0)
- 分类05555 (0)
最新评论
-
小小小羊:
好屌...
java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$Refle -
liubinli2005:
这个可以脱底spring。单独使用吗?
DAO层:jade -
cangbaotu:
我觉得对于开发者来说,能脚本化编写爬虫是一件挺开心的事情( ̄▽ ...
网页爬取 -
asjava:
很好的文章, 但每段代码清单都重复了一次.
spring 事务 -
xia635317478:
jethypc 写道验证码的session无法传过去啊 还是我 ...
登陆验证码(struts2实现)
栏目、帖子、回复(设置导航ManyToOne便于操作QBC/QBE语句)02
Criteria查询也称QBC查询:全称为Query By Criteria;它是一种采用面向
对象的方式,封装查询条件,进行查询。
CriteriaRestriction常用的限定查询方法方法说明
Restrictions.Eq()对应SQL中的“= ”
Restrictions。alleq()对应Map,使用key/value进行多个相等的值的对比
Restrictions。gt()对应SQL的大于“> ”;
Restrictions。ge()对应SQL的大于等于“>= ”
Restrictions。lt()对应SQL的小于“<”
Restrictions。le()对应SQL的小于等于“=<”Restrictions。le()对应SQL的小于等于“=<”
Restrictions。between()对应SQL的between ;
Restrictions。like()对应SQL中的like语句可以使用MatchMode 设定like 语句的匹配模式
Restrictions。in()对应SQL中的in ;
Restrictions。and()对应SQL中的and
Restrictions。or()对应SQL中的or
Restrictions。not()对应SQL中的not
一、Category.java
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Category { private int id; private String name; @Id @GeneratedValue 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; } }
二、Top.java
import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; @Entity @NamedQueries( { @NamedQuery(name="topic.selectCertainTopic", query="from Topic t where t.id = :id") } ) /* @NamedNativeQueries( { @NamedNativeQuery(name="topic.select2_5Topic", query="select * from topic limit 2, 5") } ) */ public class Topic { private int id; private String title; private Category category; private Date createDate; private List<Msg> msgs = new ArrayList<Msg>(); @OneToMany(mappedBy="topic") public List<Msg> getMsgs() { return msgs; } public void setMsgs(List<Msg> msgs) { this.msgs = msgs; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } @ManyToOne(fetch=FetchType.LAZY) public Category getCategory() { return category; } public void setCategory(Category category) { this.category = category; } @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } }
三、Msg.java
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity public class Msg { private int id; private String cont; private Topic topic; @ManyToOne public Topic getTopic() { return topic; } public void setTopic(Topic topic) { this.topic = topic; } @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getCont() { return cont; } public void setCont(String cont) { this.cont = cont; } }
四、test.java
import java.util.Date; import java.util.List; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class HibernateQLTest { private static SessionFactory sf; @BeforeClass public static void beforeClass() { sf = new AnnotationConfiguration().configure().buildSessionFactory(); } @AfterClass public static void afterClass() { sf.close(); } @Test public void testSchemaExport() { new SchemaExport(new AnnotationConfiguration().configure()).create(false, true); } @Test public void testSave() { Session session = sf.openSession(); session.beginTransaction(); for(int i=0; i<10; i++) { Category c = new Category(); c.setName("c" + i); session.save(c); } for(int i=0; i<10; i++) { Category c = new Category(); c.setId(1); Topic t = new Topic(); t.setCategory(c); t.setTitle("t" + i); t.setCreateDate(new Date()); session.save(t); } for(int i=0; i<10; i++) { Topic t = new Topic(); t.setId(1); Msg m = new Msg(); m.setCont("m" + i); m.setTopic(t); session.save(m); } session.getTransaction().commit(); session.close(); } //is empty and is not empty @Test public void testHQL_20() { Session session = sf.openSession(); session.beginTransaction(); Query q = session.createQuery("from Topic t where t.msgs is empty"); for(Object o : q.list()) { Topic t = (Topic)o; System.out.println(t.getId() + "-" + t.getTitle()); } session.getTransaction().commit(); session.close(); } @Test public void testHQL_21() { Session session = sf.openSession(); session.beginTransaction(); Query q = session.createQuery("from Topic t where t.title like '%5'"); for(Object o : q.list()) { Topic t = (Topic)o; System.out.println(t.getId() + "-" + t.getTitle()); } session.getTransaction().commit(); session.close(); } @Test public void testHQL_22() { Session session = sf.openSession(); session.beginTransaction(); Query q = session.createQuery("from Topic t where t.title like '_5'"); for(Object o : q.list()) { Topic t = (Topic)o; System.out.println(t.getId() + "-" + t.getTitle()); } session.getTransaction().commit(); session.close(); } //不重要 @Test public void testHQL_23() { Session session = sf.openSession(); session.beginTransaction(); Query q = session.createQuery("select lower(t.title)," + "upper(t.title)," + "trim(t.title)," + "concat(t.title, '***')," + "length(t.title)" + " from Topic t "); for(Object o : q.list()) { Object[] arr = (Object[])o; System.out.println(arr[0] + "-" + arr[1] + "-" + arr[2] + "-" + arr[3] + "-" + arr[4] + "-"); } session.getTransaction().commit(); session.close(); } @Test public void testHQL_24() { Session session = sf.openSession(); session.beginTransaction(); Query q = session.createQuery("select abs(t.id)," + "sqrt(t.id)," + "mod(t.id, 2)" + " from Topic t "); for(Object o : q.list()) { Object[] arr = (Object[])o; System.out.println(arr[0] + "-" + arr[1] + "-" + arr[2] ); } session.getTransaction().commit(); session.close(); } @Test public void testHQL_25() { Session session = sf.openSession(); session.beginTransaction(); Query q = session.createQuery("select current_date, current_time, current_timestamp, t.id from Topic t"); for(Object o : q.list()) { Object[] arr = (Object[])o; System.out.println(arr[0] + " | " + arr[1] + " | " + arr[2] + " | " + arr[3]); } session.getTransaction().commit(); session.close(); } @Test public void testHQL_26() { Session session = sf.openSession(); session.beginTransaction(); Query q = session.createQuery("from Topic t where t.createDate < :date"); q.setParameter("date", new Date()); for(Object o : q.list()) { Topic t = (Topic)o; System.out.println(t.getTitle()); } session.getTransaction().commit(); session.close(); } @Test public void testHQL_27() { Session session = sf.openSession(); session.beginTransaction(); Query q = session.createQuery("select t.title, count(*) from Topic t group by t.title") ; for(Object o : q.list()) { Object[] arr = (Object[])o; System.out.println(arr[0] + "|" + arr[1]); } session.getTransaction().commit(); session.close(); } @Test public void testHQL_28() { Session session = sf.openSession(); session.beginTransaction(); Query q = session.createQuery("select t.title, count(*) from Topic t group by t.title having count(*) >= 1") ; for(Object o : q.list()) { Object[] arr = (Object[])o; System.out.println(arr[0] + "|" + arr[1]); } session.getTransaction().commit(); session.close(); } @Test public void testHQL_29() { Session session = sf.openSession(); session.beginTransaction(); Query q = session.createQuery("from Topic t where t.id < (select avg(t.id) from Topic t)") ; for(Object o : q.list()) { Topic t = (Topic)o; System.out.println(t.getTitle()); } session.getTransaction().commit(); session.close(); } @Test public void testHQL_30() { Session session = sf.openSession(); session.beginTransaction(); Query q = session.createQuery("from Topic t where t.id < ALL (select t.id from Topic t where mod(t.id, 2)= 0) ") ; for(Object o : q.list()) { Topic t = (Topic)o; System.out.println(t.getTitle()); } session.getTransaction().commit(); session.close(); } //用in 可以实现exists的功能 //但是exists执行效率高 @Test public void testHQL_31() { Session session = sf.openSession(); session.beginTransaction();// t.id not in (1) Query q = session.createQuery("from Topic t where not exists (select m.id from Msg m where m.topic.id=t.id)") ; // Query q = session.createQuery("from Topic t where exists (select m.id from Msg m where m.topic.id=t.id)") ; for(Object o : q.list()) { Topic t = (Topic)o; System.out.println(t.getTitle()); } session.getTransaction().commit(); session.close(); } //update and delete //规范并没有说明是不是要更新persistent object,所以如果要使用,建议在单独的trasaction中执行 @Test public void testHQL_32() { Session session = sf.openSession(); session.beginTransaction(); Query q = session.createQuery("update Topic t set t.title = upper(t.title)") ; q.executeUpdate(); q = session.createQuery("from Topic"); for(Object o : q.list()) { Topic t = (Topic)o; System.out.println(t.getTitle()); } session.createQuery("update Topic t set t.title = lower(t.title)") .executeUpdate(); session.getTransaction().commit(); session.close(); } //不重要 @Test public void testHQL_33() { Session session = sf.openSession(); session.beginTransaction(); Query q = session.getNamedQuery("topic.selectCertainTopic"); q.setParameter("id", 5); Topic t = (Topic)q.uniqueResult(); System.out.println(t.getTitle()); session.getTransaction().commit(); session.close(); } //Native(了解) @Test public void testHQL_34() { Session session = sf.openSession(); session.beginTransaction(); SQLQuery q = session.createSQLQuery("select * from category limit 2,4").addEntity(Category.class); List<Category> categories = (List<Category>)q.list(); for(Category c : categories) { System.out.println(c.getName()); } session.getTransaction().commit(); session.close(); } @Test public void testHQL_35() { //尚未实现JPA命名的NativeSQL } public static void main(String[] args) { beforeClass(); } }
发表评论
-
hibernate缓存总结
2013-09-05 09:54 723hibernate缓存总结 Hibernat ... -
Hibernate原理
2013-09-05 09:10 1158Hibernate原理 1.hibernate ... -
getHibernateTemplate().save和super.getHibernateTemplate().merge
2012-12-05 15:16 2974代码1_save: super.getHibernate ... -
分页查询
2012-12-03 16:57 818HibernateTemplate提供了非常多的常用方法来完成 ... -
mappingResource属性和mappingDirectoryLocations属性的使用
2012-11-19 16:54 579mappingResource属性和mappingDirect ... -
S2SH整合
2012-11-12 16:08 1035Struts2_spring_Hibernate整合 MyE ... -
spring中配置log4j
2012-11-10 16:30 1616log4j 和 slf4j slf4j和log4j用于做日志 ... -
log4j 和slf4j
2012-11-11 20:55 839http://sishuok.com/forum/blogPo ... -
Hibernate两级缓存
2012-10-29 17:01 749Hibernate两级缓存 一级缓存就是Session级别 ... -
数据加载 load get list iterator
2012-10-07 11:14 1045Hibernate的优化-数据加载 除了对映射文件的配置外 ... -
栏目、帖子、回复(设置导航便于操作)HQL使用01
2012-10-06 11:28 926栏目、帖子、回复(设置导航ManyToOne便于操作 HQL语 ... -
Many-To-Many (学生、课程、分数)
2012-10-05 17:41 1303Many-To-Many (学生、课程、分数) 多对多: 一个 ... -
树状结构Tree
2012-10-05 17:09 1138树状结构Tree 一、部门类Org.java impo ... -
CUDR_Fetch 和 Cascade
2012-10-05 16:05 4682CUDR_Fetch 和 Cascade 1.Fetch ... -
OneToOne 、OneToMany 、 ManyToMany
2012-10-05 10:31 3460OneToOne OneToMany ManyToMa ... -
ID生成策略
2012-10-04 16:18 3864ID生成策略 1.XX.hbm.xml方 ... -
对象的几种状态
2012-10-04 14:10 1358对象的几种状态 1.Transient 刚new一个 ... -
load 和 get的区别
2012-10-04 11:49 1175session加载数据库数据时,load 和 get 1. ... -
Hibernate 注解和配置文件由ORM框架连接库
2012-10-02 12:30 4146Hibernate 注解和配置文件由ORM框架连接库 xm ... -
Hibernate 实现原理
2012-09-12 23:20 4109整体流程 1:通过configuration来读cfg.xml ...
相关推荐
SpringBoot-SpringData-ManyToOne,博文地址:http://blog.csdn.net/ABAP_Brave/article/details/52850062
本代码为hibernate的manytoone的代码 博文链接:https://shaqiang32.iteye.com/blog/201307
Hibernate的两个类设置了manyToOne之后,在查询的时候, 由于N 对1的一方默认的fetch=FetchType.EAGER,所以会 把被关联的对象一起取出来
在 Hibernate 中,CascadeType属性通常用于@OneToMany、@ManyToOne和@ManyToMany注解中,用于定义实体之间的级联操作。例如,在订单系统中,订单和订单项之间的关系可以使用@OneToMany注解,并设置CascadeType为ALL...
(2) 是否在该列上设置唯一约束 boolean nullable() default true; (3) 列可空? boolean insertable() default true; (4) 该列是否作为生成 insert语句的一个列 boolean updatable() default true; (5) 该列是否...
第一阶段的工程 博文链接:https://selvemen.iteye.com/blog/458615
* @ManyToOne 设置多对一关联 * 方法一 * @ManyToOne(cascade={CasCadeType.PERSIST,CascadeType.MERGE}) * @JoinColumn(name="外键") * public 主表类 get主表类(){return 主表对象} * 方法二 * @ManyToOne...
CRUD操作。 自动保存多语言表。 使用诸如oneToMany,ManyToOne之类的关联来获取数据 将过滤器应用于结果 分页... 安装 CodeIgniter Versoin> = 2.xx 将文件MY_Model.php复制到application/core/文件夹。 用法 ...
onetomany onetoone manytoone manytomany xml的
主要介绍了MySQL使用外键实现级联删除与更新的方法,详细分析了mysql数据库与表的创建、数据插入、查询以及外链的使用与级联操作相关技巧,需要的朋友可以参考下
BOS 技术整理-02 Oracle 数据库安装配置使用 直接安装 打开服务 并尝试连接数据库 安装远程连接工具 PLSQLDeveloper 安装配置使用 2.在 PLSQL Developer 启动,配置 oracle instanceclient ...
这是BootCamp Rocketseat挑战8号,它是使用各种技术和概念在NodeJ和Typescript中创建的应用程序,例如域驱动设计(带有模块,层的DDD ...),与客户,产品和订单的操作,DTO,键入文本,键入,路由,控制器,服务,...
最后,我们可以创建Device实体类,并使用@ManyToOne注解来关联Build实体类。 ```java @XmlRootElement @Entity @Table(name = "device") public class Device { @Id @GeneratedValue(strategy = GenerationType....
详解Hibernate cascade级联属性的CascadeType的用法 cascade(级联) ...cascade表示级联操作,在hibernate配置注解@OneToOne,@OneToMany,@ManyToMany,@ManyToOne中的属性。 例如: @ManyToOne(c
// ManyToOne inferred User[] users; // OneToMany inferred this() { address = new Address(); } } @Embeddable class Address { string zip; string city; string ...
对于一对多的双向映射,如果要一对多这一端维护关联关系,你需要删除mappedBy元素并将多对一这端的@JoinColoumn的insertable和updatabel设置为false。这种方案不会得到什么明显的优化,而且还会增加一些附加的UPDATE...
卡瓦诺娃 Nova是MongoDB节点驱动程序之上的获取层,该层允许SQL可比的速度来检索关系数据。 通过提供将GraphQL查询转换为Nova查询的功能,GraphQL被视为一流公民。... manyToOne ( Comments , Po
0.0.1-SNAPSHOT.jar运行前端: ng serve -o文件Github项目-https: 主要困难业务/域规则,已多次更改在后端建立关系@OneToMany-@ManyToOne 后端全球CORS 后端验证组织Dockerfile和docker-compose.yml