EJB3.0实体 主键 自增 用O/R Mapping建立一个实体每增加一个实体要让实体的主键自动加1怎么做?用注释?高手指导下啊谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 方式一:采用数据库自身的自增长列,数据库需要支持自动增长。对于 Oracle 就不能采用这种方式。import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name = "USER")public class User { private long id; private String username; private String password; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public long getId() { return id; } public void setId(long id) { this.id = id; } @Column public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Column(unique = true) public String getUsername() { return username; } public void setUsername(String username) { this.username = username; }}方式二:对于没有自增列的数据库,如:Oracle,采用 Sequence 方式。import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.SequenceGenerator;import javax.persistence.Table;@Entity@Table(name = "USER")// name 指定该 Sequence 在 @Id 中引用的名字// sequenceName 表示数据库中的 Sequence 名称// allocationSize 访问 Sequence 的递增值,默认为 50@SequenceGenerator(name = "USER_SEQUENCE", sequenceName = "S_USER", allocationSize = 1)public class User { private long id; private String username; private String password; @Id // generator 指的就是 @SequenceGenerator 中的 name 值 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_SEQUENCE") public long getId() { return id; } public void setId(long id) { this.id = id; } @Column public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Column(unique = true) public String getUsername() { return username; } public void setUsername(String username) { this.username = username; }}方式三:需要在数据库中建一张主键表按下面的代码为例:主键表表名为:GENERATOR_TABLE表结构:PK_COLUMN VARCHAR NOT NULL,PK_VALUE LONG NOT NULLimport javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;import javax.persistence.TableGenerator;@Entity@Table(name = "USER")public class User { private long id; private String username; private String password; @Id @TableGenerator(name = "USER_PK_GENERATOR", table = "GENERATOR_TABLE", pkColumnName = "PK_COLUMN", valueColumnName = "PK_VALUE", pkColumnValue = "USER_PK", allocationSize = 1) @GeneratedValue(strategy = GenerationType.TABLE, generator = "USER_PK_GENERATOR") public long getId() { return id; } public void setId(long id) { this.id = id; } @Column public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Column(unique = true) public String getUsername() { return username; } public void setUsername(String username) { this.username = username; }} js 一个小问题. Hibernate 与 JTA MYSQL INNODB JOTM 这个问题有点严重,不好表达,网络编程的。。。 请高手指点 郁闷中! 问个小问题,权当散分 恳请各位走在前面的人告诉我山后面是什么? 请问怎么作出jar文件? 牛人请进,菜鸟也欢迎捧棒场! 在javasoft 的forum上的两题:1.JMF and Proxy ,2.Voice Over DSL . 为什么tomcat要与Apache结合使用? 请教一个url中文的问题 swt中如何实时显示时间? 到底怎么回事
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;@Entity
@Table(name = "USER")
public class User { private long id;
private String username;
private String password;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@Column
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Column(unique = true)
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}方式二:对于没有自增列的数据库,如:Oracle,采用 Sequence 方式。
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;@Entity
@Table(name = "USER")// name 指定该 Sequence 在 @Id 中引用的名字
// sequenceName 表示数据库中的 Sequence 名称
// allocationSize 访问 Sequence 的递增值,默认为 50
@SequenceGenerator(name = "USER_SEQUENCE", sequenceName = "S_USER", allocationSize = 1)
public class User { private long id;
private String username;
private String password;
@Id
// generator 指的就是 @SequenceGenerator 中的 name 值
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_SEQUENCE")
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@Column
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Column(unique = true)
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}方式三:需要在数据库中建一张主键表按下面的代码为例:
主键表表名为:GENERATOR_TABLE
表结构:
PK_COLUMN VARCHAR NOT NULL,
PK_VALUE LONG NOT NULLimport javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.TableGenerator;@Entity
@Table(name = "USER")
public class User { private long id;
private String username;
private String password;
@Id
@TableGenerator(name = "USER_PK_GENERATOR",
table = "GENERATOR_TABLE",
pkColumnName = "PK_COLUMN",
valueColumnName = "PK_VALUE",
pkColumnValue = "USER_PK",
allocationSize = 1)
@GeneratedValue(strategy = GenerationType.TABLE, generator = "USER_PK_GENERATOR")
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@Column
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Column(unique = true)
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}