- 浏览: 236683 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
ly8666:
十分感谢。。谢谢
一个完整的混合加密方式在Socket客户机服务器通信应用中的例子 -
blaiu:
打个包传上来?
用CSS实现下拉菜单的多种方法 -
kk_luan:
至支持IE,但不能支持IE9
JavaScript关闭当前网页,不用提示 -
lishaorui:
刚好需要,试了下,很好。
android技巧:apk文件反编译以及签名打包(dex2jar&jd,apktool,apk-sign) -
shaopengxiang:
有没有源码哈? 能共享吗?
DroidInfo v0.2.1 手机信息查询应用
CascadeType.PERSIST (级联新建) CascadeType.REMOVE (级联删除) CascadeType.REFRESH (级联刷新) CascadeType.MERGE (级联更新)中选择一个或多个。 CascadeType.ALL 有时候CascadeType不行, 解决方法:利用hibernate的自定义的级联删除,不要使用jpa的 import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; .....................// @OneToMany(mappedBy="enterprise") @Cascade(value={CascadeType.SAVE_UPDATE}) ................................// Class Level: @Entity @Table( name = "tb_user", uniqueConstraints ={@UniqueConstraint(columnNames = "userName")}) public class User implements Serializable { private Integer id; private String userName; } 主键 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) 或者 @Id @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "uuid") Method Level @Basic @Transient @Column 所有非static非transient都会被持久化,也就是说所有加@Transient是不会被保存到数据库中的,所有没有加注的默认为@Basic,通过Column我们可以更一步的定义列名,是否为空,长度,是否可更新等等属性值,
这里设置的name,比如actcodeId,那么数据库中就是actcode_id @Column(name = "actcodeId", updatable = false, nullable = true, length = 36) @Column(name = "userName", nullable = false, length = 80, unique = true) public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } @Transient public String getPassword() { return password; } 默认的列名就是属性名,上面的name="userName"只是演示而已。 password加注为@Transient,所以通过SchemaExport导入Schema,查看表结构是没有这个字段的。 @Formula @Formula(" (select COUNT(*) from school_info) ") private int count; @Temporal 日期类型,分三种,Time,Date,Timestamp @Temporal(TemporalType.TIMESTAMP) public Date getBirthday() { return birthday; } @Lob 1:所有的Clob,Character,char,String都会被转为Clob 2:所有的Blob,Byte[],byte[],serializable都会被转为Blob POJO中有一个private String content;的属性,按ejb3配成@Lob后,被处理成了text类型,text 64k的存储容量还是比较可怜了。 @Lob @Column(columnDefinition = "LongText") @Lob public Clob getResume() { return resume; } @Lob public Blob getImage() { return image; } 级联策略 @Cascade(value = {org.hibernate.annotations.CascadeType.DELETE_ORPHAN, org.hibernate.annotations.CascadeType.ALL}) @JoinColumn(name = "info_id") CACHE ejb3-persistence.jar里面没有找到cache的配置,继续请出hibernate来干活 import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; @Entity @Table(name = "T_INFO") @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 实例 @Entity Public class Troop{ @OneToMany(mappedBy = "troop") Public Set<Solder> getSolders(){} } @Entity Public class Solder{ @ManyToOne @JoinColumn(name="troop_fk") Public Troop getTroop(){} } Troop通过troop属性和Solder建立了一对多关的双向关联,在mappedBy端不必也不能再定义任何物理映射。对以一对多的双向关联,如果要一对多这一端维护关联关系,需要删除mappedBy元素并将多对以这一段的@JoinColumn的inserttable和updatetable设置为false。 // mappedBy="school"就相当于inverse=true,(mappedBy指定的是不需要维护关系的一端) // 应该注意的是mappedBy值对应@ManyToOne标注的属性,我刚开始写成"schoolId",让我郁闷了好一会 @OneToMany(mappedBy = "school", cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = UserMember.class) // 用范性的话,就不用targetEntity了 private List<usermember> users = </usermember>new ArrayList<usermember>(); </usermember> import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import org.hibernate.annotations.Formula; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name = "school_info") public class SchoolInfo implements java.io.Serializable { @Id @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "uuid") private String id;//hibernate的uuid机制,生成32为字符串 @Column(name = "actcodeId", updatable = false, nullable = true, length = 36) private String actcodeId; @Formula("select COUNT(*) from school_info") private int count; @Temporal(TemporalType.TIMESTAMP)//不用set,hibernate会自动把当前时间写入 @Column(updatable = false, length = 20) private Date createTime; @Temporal(TemporalType.TIMESTAMP) private Date updateTime;// 刚开始我默认insertable=false,但会读取出错提示如下: // Value '0000-00-00' can not be represented as java.sql.Timestamp // mappedBy="school"就相当于inverse=true,(mappedBy指定的是不需要维护关系的一端) // 应该注意的是mappedBy值对应@ManyToOne标注的属性,我刚开始写成"schoolId",让我郁闷了好一会 @OneToMany(mappedBy = "school", cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = UserMember.class) // 用范性的话,就不用targetEntity了 private List<usermember> users = </usermember>new ArrayList<usermember>(); </usermember> } @GeneratedValue(strategy=GenerationType.AUTO)我们常用的自增长机制,我这里采用的是hibernate的uuid生成机制. 需要注意的是import javax.xx.Entity ,而不是org.hibernate.xx.Entity。 郁闷的是我上面用到@Formula,生成的sql竟然是'select COUNT(*) from school_info as formula0_ from school_info schoolinfo0_,当然不能执行了,寻求正解中~!!!!!!!!! UserMember.java(前面引入的包已经贴过了,下面就不贴了) @Entity @Table(name = "teacher_info")//实体类和数据库表名不一致时,才用这个 public class UserMember implements java.io.Serializable { @Id @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "uuid") private String id; @Column(updatable = false, nullable = false, length = 20) private String logonName; @Temporal(TemporalType.TIMESTAMP) @Column(updatable = false, length = 20) private Date createTime; @Temporal(TemporalType.TIMESTAMP) private Date updateTime; @ManyToOne(cascade = { CascadeType.MERGE }) @JoinColumn(name = "schoolId") private SchoolInfo school; //注意该类就不用声明schoolId属性了,如果不用@JoinColumn指明关联的字段,hibernate默认会是school_id. }
1:通过@Entity声明当前pojo为实体Bean
2:通过@Table定义对应数据库表的属性
name:表名,默认实体类名
uniqueConstraints:定义表的唯一性约束
在ejb3-persistence.jar中只定义了ALL、MERGE、PERSIST、REFRESH、REMOVE,比较恶心的就是,删除对象的时候,并不会级联删除关联对象,而是用update xx set parent_id=null where parent_id=?这类语句把关系干掉了事。不得已,在这儿用了hibernate的DELETE_ORPHAN。
@OneToMany(targetEntity = Attachment.class)
发表评论
-
Java程序员常用工具集
2012-04-18 09:14 1310我发现很多人没办法高效地解决问题的关键原因是不熟悉工具,不熟 ... -
seam-gen 增加messages_zh_CN.properties
2011-08-04 17:25 1690新建一个Generic Exporter,具体添加的属性如下: ... -
web文件下载,路径或文件名中文乱码
2011-07-08 18:14 2380/** * 附件下载 * @para ... -
java中导入导出Excel表格(jxl的API应用)
2011-06-21 09:26 9531使用Windows操作系统的朋友对Excel(电子表格) ... -
利用jetty实现超轻量级web开发
2011-02-14 10:42 1599早上看到这篇不错,分享来:http://www.blogjav ... -
一个完整的混合加密方式在Socket客户机服务器通信应用中的例子
2010-12-27 21:38 4167按:前面(http://www.blogjava.net/he ... -
如何在Ubuntu 10.04安裝Sun JDK 5
2010-09-09 02:06 2621Ubuntu 10.04把Sun JDK移出主要的軟 ... -
Proguard混淆器
2010-09-04 09:31 4670我们做java开发的一般都会遇到如何保护我们开发的代码问题。j ... -
轻松使用apache pdfbox将pdf文件生成图片
2010-07-23 11:20 4657近期在项目中使用到了大量的报表开发,需要将html页面中的 ... -
常用正则表达式(非常有用!)
2010-06-28 09:50 927"^\d+$" //非负整数(正整数 ... -
在Twitter应用中使用OAuth
2010-05-22 22:26 3166Twitter将在6月30日之后停止不安全的Basic Aut ... -
20个超级有用的Java程序片段(3)
2010-05-19 17:40 120216. 解析/读取XML 文件 Java代码 XM ... -
20个超级有用的Java程序片段(2)
2010-05-19 17:35 125913. 抓屏程序 Java代码 import ja ... -
20个超级有用的Java程序片段(1)
2010-05-13 12:58 11841. 字符串有整型的相互转换 Java代码 St ... -
使用JNA替代JNI调用本地方法
2010-05-12 21:55 2619JNA全称是Java Native Access,是Sun推 ... -
jxl读取excel小数点后三位截取问题
2010-04-29 15:40 4176今天读取excel文件时发现一个问题,获得Sheet对象后,通 ...
相关推荐
《深入理解Hibernate-annotations-3.4.0:简化对象持久化的注解神器》 在现代软件开发中,数据库操作是不可或缺的一部分。为了有效地管理数据对象与数据库之间的映射关系,Hibernate作为一款强大的Java对象关系映射...
hibernate-annotations-3.4.0 中文帮助文档,希望对大家有帮助。
hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.12.Final.jar hibernate-ehcache-4.1.12.Final.jar hibernate-entitymanager-4.1.12.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar ...
《Hibernate核心组件:hibernate-annotations-3.4.0.jar详解》 在Java世界里,ORM(Object-Relational Mapping)框架是连接数据库的重要工具,其中Hibernate作为一款广泛应用的ORM框架,大大简化了数据库操作。而`...
`html.CHM`可能包含了通用的HTML格式的文档,方便在各种设备上阅读,而`hibernate-annotations-3.4.0.GA.CHM`则可能是专门为Hibernate注解3.4.0.GA版本定制的帮助文件,其中包含了详细的API参考、示例代码和使用指南...
《Hibernate Annotations 3.4.0.GA:深入理解与应用》 Hibernate是Java领域中广泛应用的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。而Hibernate ...
使用注解Annotation时用的jar包。 包括: hibernate-commons-annotations-3.3.0.ga.jar hibernate-entitymanager.jar ejb3-persistence.jar hibernate-annotations.jar
hibernate-annotations-3.4.0.GA.rar 提供hibernate与annotation的配置包,一般现在的版本是3.5的版本,而3.5版本里面的参考文档不是很齐全,因此老版本的hibernate包还是有用的
1. 引入Hibernate和Hibernate Annotations相关jar包:包括hibernate-annotations.jar、hibernate-commons-annotations.jar、hibernate-entitymanager.jar以及JPA规范所需的jar包。 2. 创建实体类:在实体类上添加@...
标题中的"jquery+json+structs+spring+hibernate-annotations+maven"是一个典型的Java Web开发技术栈,涵盖了前端到后端的核心组件。这里,我们逐一解析这些技术及其关联的知识点。 1. **jQuery**: jQuery是一个...
在本文中,我们将深入探讨`hibernate-commons-annotations-5.0.1.Final.jar`的源码,了解其内部结构和主要功能。 一、元数据注解 HCA的核心在于提供了一系列的注解,如`@Entity`、`@Table`、`@Column`、`@Id`等,...
在开发过程中,使用Hibernate-Annotations-3.4版本,有一些必要的包是不可或缺的。这些包提供了核心功能,包括对象关系映射(ORM)、事务管理、查询服务等。 1. **Hibernate Core**: 这是Hibernate的核心库,包含了...
hibernate-commons-annotations-4.0.1.Final.jar
本篇将详细探讨`hibernate-annotations-3.4.0.GA`和`hibernate-entitymanager-3.4.0.GA`这两个版本中的核心知识点,尤其是它们在注释和枚举映射方面的应用。 首先,`hibernate-annotations`是Hibernate提供的一套...
hibernate-commons-annotations-5.1.0.Final.jar
《hibernate-common-annotations.jar:Hibernate ORM框架中的核心注解库详解》 在Java世界里,ORM(Object-Relational Mapping)框架是连接数据库与应用程序的重要桥梁,而Hibernate作为其中的佼佼者,深受广大...
《Hibernate Annotations 框架详解》 在Java领域,Hibernate是一个广泛应用的对象关系映射(ORM)框架,它极大地简化了数据库操作。而`hibernate-annotations.jar`是Hibernate框架中的一个重要组件,主要负责处理...
Hibernate Annotations是Hibernate的一部分,它引入了JPA(Java Persistence API)规范,使得在实体类上直接使用注解就能进行数据库操作。3.4.0.GA版本是Hibernate Annotations的一个稳定版本,提供了丰富的功能和...
hibernate annotations 核心包,欢迎下载