jpa 非主键字段如何配置为自动增长类型(困扰多时的问题)

livan1038 2010-10-19 11:44:33
比如我有一个表cust有以下字段:
-------------------------------
列名 数据类型 允许NULL 主键
id int no 自动增长
custId int no yes
name varchar(50) no yes
address varchar(100) yes no

--------------------------
custId和name为主键,但我又想id这个字段设为自动增长类型,这种情况下jpa应该如何写才可以让这个非主键id字段为自动增长类型的呢?(我的数据库是sybase)

先谢谢大家了。
--------------------------------------------------------------------------------
我目前这样写的,但是有问题,不知道这个ID如何写才是正确的写法
custPk.java
----------------------------------
import java.io.Serializable;
public class CustPk implements Serializable {

private static final long serialVersionUID = -7310844877900844920L;
private int custId;
private String name;

public int getCustId(){
return this.custId;
}

public String getName() {
return this.name;
}

public CustPk() {
}

@Override
public int hashCode() {
.................
}

@Override
public boolean equals(Object obj) {
........
}
}
--------------------------------------------------------------------
Cust.java
--------------------------------------------------------------------
@Audited
@Entity
@Table(name = "Cust")
@IdClass(CustPk.class)
public class Cust
{
private static final long serialVersionUID = -3186455049080602773L;
Long id;
int custId;
String name;
String address;

public Cust() {

}

@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "ID", insertable=false, updatable=false, precision=19, scale=0, nullable=false)
public Long getId() {
return super.getId();
}

@Id
@Column(name = "custId", length = 10, nullable=false)
public int getCustId() {
return this.custId
}
public void setCustid(int custId){
this.custId = custId;
}

@Id
@Column(name = "name", length = 50, nullable=false)
public String getName() {
return this.name;
}

public void setName(String name){
this.name = name;
}
..................................
}
...全文
1624 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
livan1038 2010-10-21
  • 打赏
  • 举报
回复
呵呵,自己解决,和大家分享一下:
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID",nullable=false,insertable=false,updatable=false,columnDefinition="numeric(19,0) IDENTITY")
public Long getId() {
return super.getId();
}
xuyang840117 2010-10-21
  • 打赏
  • 举报
回复
@GeneratedValue(strategy = GenerationType.IDENTITY)
blazingfire 2010-10-21
  • 打赏
  • 举报
回复
直接用UUID吧
livan1038 2010-10-21
  • 打赏
  • 举报
回复
难道真没其它办法了。。。。
livan1038 2010-10-19
  • 打赏
  • 举报
回复
高手都跑哪去了。。。。呵呵
potahai 2010-10-19
  • 打赏
  • 举报
回复
数据定义一个 SEQUENCE 然后再CustPk里配置一下就可以了
@cutId
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="g_seq")
@SequenceGenerator(name="g_seq", sequenceName="S_NEWSPLAY")

@Column(name = "cutid", unique = true, nullable = false)
qqzhuyuehe 2010-10-19
  • 打赏
  • 举报
回复
没有这么用过,爱莫能助了……

58,440

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧