论坛首页 Java版 企业应用

两字段复合主键,同时该主键每字段都是外键, JPA配置的疑惑.

浏览 408 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2008-01-07
oracle数据库

create table m_goods(
goodid int not null,
goodname varchar2(30) not null,
constraint PK_M_GOODS primary key(goodid)
);

create table m_order(
orderid int not null,
constraint PK_M_ORDER primary key(orderid)
);

create table m_orderitem(
goodid int not null,
quantity int not null,
constraint PK_M_ORDERITEM primary key(goodid,orderid),
constraint FK_ORDERID foreign key (goodid) references m_goods(goodid),
constraint PK_GOODID foreign key(orderid) references m_order(orderid)
);

goods.java
@Entity
@Table(name = "M_GOODS")
public class Goods implements Serializable {

private Integer goodId;
private String goodName;

@Id
@Column(name="GOODID")
public Integer getGoodId() {
return goodId;
}

public void setGoodId(Integer goodId) {
this.goodId = goodId;
}

@Column(name="GOODNAME")
public String getGoodName() {
return goodName;
}

public void setGoodName(String goodName) {
this.goodName = goodName;
}

}

order.java
package com.lideedu.jpakey.entity;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "M_ORDER")
public class Order implements Serializable {

private Integer orderId;
private String orderName;
private List<OrderItem> orderItems;

@Id
@Column(name="ORDERID")
public Integer getOrderId() {
return orderId;
}

public void setOrderId(Integer orderId) {
this.orderId = orderId;
}

@Column(name="ORDERNAME")
public String getOrderName() {
return orderName;
}

public void setOrderName(String orderName) {
this.orderName = orderName;
}

@OneToMany(mappedBy="order",cascade=CascadeType.ALL,fetch=FetchType.EAGER)
public List<OrderItem> getOrderItems() {
return orderItems;
}

public void setOrderItems(List<OrderItem> orderItems) {
this.orderItems = orderItems;
}


}
orderItemPK.java
package com.lideedu.jpakey.entity;

import java.io.Serializable;

import javax.persistence.Embeddable;

@Embeddable
public class OrderItemPK implements Serializable {

private Integer orderId;
private Integer goodid;

public Integer getOrderId() {
return orderId;
}

public void setOrderId(Integer orderId) {
this.orderId = orderId;
}

public Integer getGoodid() {
return goodid;
}

public void setGoodid(Integer goodid) {
this.goodid = goodid;
}

public OrderItemPK() {
super();
}

}

OrderItem.java
package com.lideedu.jpakey.entity;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "M_ORDERITEM")
public class OrderItem implements Serializable {

private OrderItemPK orderItemPK;
private Integer quantity;
private Order order;
private Goods goods;

@EmbeddedId
public OrderItemPK getOrderItemPK() {
return orderItemPK;
}

public void setOrderItemPK(OrderItemPK orderItemPK) {
this.orderItemPK = orderItemPK;
}

public Integer getQuantity() {
return quantity;
}

public void setQuantity(Integer quantity) {
this.quantity = quantity;
}

@ManyToOne(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@JoinColumn(name="ORDERID",referencedColumnName="ORDERID")
public Order getOrder() {
return order;
}

public void setOrder(Order order) {
this.order = order;
}

@ManyToOne(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@JoinColumn(name="GOODID",referencedColumnName="GOODID")
public Goods getGoods() {
return goods;
}

public void setGoods(Goods goods) {
this.goods = goods;
}
}

今天晚上花时间测试了下,老是失败,估计配置有问题,大家谈谈看法.
   
时间:2008-01-08
create table m_orderitem(
goodid int not null,
quantity int not null,
constraint PK_M_ORDERITEM primary key(goodid,orderid),
constraint FK_ORDERID foreign key (goodid) references m_goods(goodid),
constraint PK_GOODID foreign key(orderid) references m_order(orderid)
);
这个表中哪有orderid
   
0 请登录后投票
论坛首页 Java版 企业应用

跳转论坛:
JavaEye推荐