JPA外键(在线等。。。)

kobeBryant_ 2010-01-18 03:44:39
jpa单方依赖怎么做?
例如吧:其中product 表中有个ID(对应的javaBean为Prodcut)
在另一个put_proudct 表中有自己的ID,其中还有一个外键(product_id),是product中的ID(对应的javaBean为PutProdcut)
但是建模的时候,我PutProdcut中有Product的引用,但是Product中没有PutProdcut的引用。
那我改怎么加外键呢?
JPA。。在线等。。
...全文
217 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
islandrabbit 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhangjihao 的回复:]
这种情况是多对一关系,只要在多方配置关系就行,一方就不要管,这就是单向依赖。
[/Quote]

如果是一对一,也是同样的道理:

@Entity
@Table(name="PRODUCT")
public class Product {

@Id @GeneratedValue
@Column(name="PRODUCT_ID")
private long id;

@Column(name="PRODUCT_NAME", nullable=false)
private String name;

public Product() {}

public long getId() {
return id;
}

public void setName(String name) {
this.name = name;
}

public String getName() {
return name;
}
}

@Entity
@Table(name = "PUT_PRODUCT")
public class PutProduct {

@Id
@GeneratedValue
@Column(name = "PUT_PRODUCT_ID")
private long id;

@ManyToOne
@JoinColumn(name="PRODUCT_ID")
private Product product;

public PutProduct() {
}

public long getId() {
return id;
}

public void setProduct(Product product) {
this.product = product;
}

public Product getProduct() {
return product;
}
}

howsun_zh 2010-01-18
  • 打赏
  • 举报
回复
这种情况是多对一关系,只要在多方配置关系就行,一方就不要管,这就是单向依赖。

public class OrderItem {

@ManyToOne(cascade = CascadeType.REFRESH, optional = false)
@JoinColumn(name="orderid")
private Order order;

}

public class Order {
//这里就不要管OrderItem了
}
kobeBryant_ 2010-01-18
  • 打赏
  • 举报
回复
这个列子我知道
不过还是谢谢了
我的意思 比如就拿你那个来说的话
在OrderItem中要用到Order的id
但是不要在Order中保存OrderItem的引用 这个时候该怎么写啊?
islandrabbit 2010-01-18
  • 打赏
  • 举报
回复
mark
zhj92lxs 2010-01-18
  • 打赏
  • 举报
回复

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;


@Entity
public class OrderItem {
private Integer id;
private String productName;
private Float sellPrice = 0f;

private Order order;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

@Column(length = 40, nullable = false)
public String getProductName() {
return productName;
}

public void setProductName(String productName) {
this.productName = productName;
}

@Column(nullable = false)
public Float getSellPrice() {
return sellPrice;
}

public void setSellPrice(Float sellPrice) {
this.sellPrice = sellPrice;
}
/*
* <manytoone column>
*/
@ManyToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH }, fetch = FetchType.EAGER, optional = false)
@JoinColumn(name="order_id")//指定列
public Order getOrder() {
return order;
}

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


import java.util.HashSet;
import java.util.Set;

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="orders")
public class Order {
private String orderId;
private Float amount = 0f;

private Set<OrderItem> items = new HashSet<OrderItem>();

@Id
@Column(length = 12)
public String getOrderId() {
return orderId;
}

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

@Column(nullable = false)
public Float getAmount() {
return amount;
}

public void setAmount(Float amount) {
this.amount = amount;
}


@OneToMany(cascade = { CascadeType.REFRESH, CascadeType.PERSIST,
CascadeType.MERGE, CascadeType.REMOVE }, fetch = FetchType.LAZY, mappedBy = "order")
public Set<OrderItem> getItems() {
return items;
}

public void setItems(Set<OrderItem> items) {
this.items = items;
}


public void addOrderItem(OrderItem orderItem){
orderItem.setOrder(this);
this.items.add(orderItem);
}
}


没看明白,给个例子,不知是否是你想要的
kobeBryant_ 2010-01-18
  • 打赏
  • 举报
回复
没人回到啊 我在看了好多次了
是不是分少了 或者问题本身有问题啊 呵呵
不清楚的可以再问就是了 我会尽量把问题描述清楚点
hbu_zhy 2010-01-18
  • 打赏
  • 举报
回复
帮顶!
Java&Oracle学习交流群,知无不言,言无不尽。欢迎大家交流分享学习工作心得。QQ群:20378027

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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