table CUSTOMER
(
   CUSTOMER_ID          INTEGER                not null,
   CODE                 VARCHAR(20)            not null,
   EMAIL                VARCHAR(50),
   constraint CUSTOMER_PK primary key (CODE),
   constraint CUSTOMER_IDX0 unique (CUSTOMER_ID)
)
table SPN_HEADER
(
   SPN_HEADER_ID        BIGINT                 not null,
   SPN_NUMBER           VARCHAR(20)            not null,
   CUSTOMER_ID          INTEGER,
   constraint SPN_HEADER_PK primary key (SPN_NUMBER),
   constraint SPN_HEADER_IDX0 unique (SPN_HEADER_ID)

这样的两个表怎样用JPA的注解方式来表示,很郁闷。 

解决方案 »

  1.   

    这个表感觉就有问题1:一般来说主键列名用 ID,这样每个人都能看明白
    2:不要使用与业务逻辑相关的字段作为主键,像上面那两个表中的 CODE 和 SPN_NUMBER
    2:表的主键列中的值是怎么来的?自增?序列?
      

  2.   

    SPN_HEADER.CUSTOMER_ID是FK?
      

  3.   

    constraint CUSTOMER_PK primary key (CODE),
    这是主键
    constraint CUSTOMER_IDX0 unique (CUSTOMER_ID)
    这是唯一索引
    这两个表示1-n的关系,郁闷的是它不是用主键来关联的,而使用的是索引。
    那么像这样的表怎么改动了?
    变成我们习惯的样子呢?
      

  4.   

    楼主你是不是有个误区啊?数据表中有外键关联的表,在 ORM 映射中并不一定要关联的!PS:我们建表的时候不但 ORM 中不做关联,连数据表中也不建外键约束的。
      

  5.   

    对呀,是这样的,可现在他就是这样做的呀,
    如果用数据库建表,这样可以,那么如果用JPA注解方式来建这两个表,该怎么建呢?
      

  6.   

    用 JPA 来建表?JPA 有这功能么?
      

  7.   

    表不都是用 SQL 语句建的么?
      

  8.   

    靠  老兄,原来JPA你不知道呀,回去学习学习吧。