日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jpa一对多映射案例

發布時間:2024/9/27 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jpa一对多映射案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

訂單和訂單項就是一對多的關系。一個訂單有多個訂單項,一個訂單項屬于某個訂單。

訂單和訂單項映射后的表結構如下:

訂單表結構

訂單項表結構

下面就以訂單和訂單項為例介紹多對多映射關系的實例開發

persistence.xml配置文件

?

<?xml version="1.0"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"><!--事務類型:本地事務(僅針對一個數據庫)和全局事務(針對多個數據庫);RESOURCE_LOCAL: 本地事務 --><persistence-unit name="ljq" transaction-type="RESOURCE_LOCAL"><properties><property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/><property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/><property name="hibernate.connection.username" value="root"/><property name="hibernate.connection.password" value="mysql"/><property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8"/><property name="hibernate.hbm2ddl.auto" value="update"/></properties></persistence-unit> </persistence>

Order訂單類

?

package com.ljq.entity;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;/*** one端* * 碰到many為末端的加載就是延遲加載,若one為末端則為立即加載,除了one-to-one。* * @author jiqinlin* */ @Entity @Table(name = "tb_order") @SuppressWarnings("serial") public class Order implements java.io.Serializable {// String類型不能用uuid,需要人為指定 @Id@Column(length = 12)private String orderid;@Column(nullable = false)private Float amount = 0f;// @OneToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE})// mappedBy="order": 指明Order類為雙向關系維護端,負責外鍵的更新 @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "order")private Set<OrderItem> items = new HashSet<OrderItem>();public Order() {super();}public Float getAmount() {return amount;}public void setAmount(Float amount) {this.amount = amount;}public String getOrderid() {return orderid;}public void setOrderid(String orderid) {this.orderid = orderid;}public Set<OrderItem> getItems() {return items;}public void setItems(Set<OrderItem> items) {this.items = items;} /*** 添加訂單項* * @param student*/public void addOrderItem(OrderItem item) {if (!this.items.contains(item)) {this.items.add(item);item.setOrder(this);}}/*** 刪除訂單項* * @param student*/public void removeOrderItem(OrderItem item) {if (this.items.contains(item)) {item.setOrder(null);this.items.remove(item);}}}

OrderItem訂單項類

?

package com.ljq.entity;import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table;/*** many端* * 在one-to-many雙向關聯中,多的一方為關系維護端,關系維護端負責外鍵記錄的更新 * 關系被維護端是沒有權力更新外鍵記錄的* * @author jiqinlin* */@Entity @Table(name = "tb_orderitem") @SuppressWarnings("serial") public class OrderItem implements java.io.Serializable {@Id@GeneratedValueprivate Integer id;@Column(length = 40, nullable = false)private String productName;@Column(nullable = false)private Float sellPrice = 0f;// optional=true:可選,表示此對象可以沒有,可以為null;false表示必須存在 @ManyToOne(cascade = { CascadeType.REFRESH, CascadeType.MERGE }, optional = true)@JoinColumn(name = "order_id")private Order order;public OrderItem() {super();}public OrderItem(String productName, Float sellPrice) {super();this.productName = productName;this.sellPrice = sellPrice;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getProductName() {return productName;}public void setProductName(String productName) {this.productName = productName;}public Float getSellPrice() {return sellPrice;}public void setSellPrice(Float sellPrice) {this.sellPrice = sellPrice;}public Order getOrder() {return order;}public void setOrder(Order order) {this.order = order;}}

OrderTest測試類

?

package com.ljq.test;import java.io.Serializable; import java.util.List; import java.util.Set; import java.util.UUID;import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence;import org.junit.Test;import com.ljq.entity.Order; import com.ljq.entity.OrderItem; import com.sun.org.apache.xpath.internal.operations.Or;public class OrderTest {/*** 添加訂單Order時同時添加兩個訂單項OrderItem,因為訂單Order為雙向關系維護者,起著主導作用*/@Testpublic void save() {EntityManagerFactory factory = Persistence.createEntityManagerFactory("ljq");EntityManager em = factory.createEntityManager();em.getTransaction().begin();Order order = new Order();order.setAmount(34f);//UUID.randomUUID().toString() order.setOrderid("xxxx"); order.addOrderItem(new OrderItem("足球",20f));order.addOrderItem(new OrderItem("籃球",25f));em.persist(order);em.getTransaction().commit();em.close();factory.close();}/*** 刪除Order對象時,會自動刪除OrderItem對象(即:父對象刪除時子對象跟著刪除)*/@Testpublic void detele1(){EntityManagerFactory factory = Persistence.createEntityManagerFactory("ljq");EntityManager em = factory.createEntityManager();em.getTransaction().begin();Order order=em.getReference(Order.class, "xxxx");em.remove(order);em.getTransaction().commit();em.close();factory.close();}/*** 刪除子對象時,父對象沒影響*/@Testpublic void detele2(){EntityManagerFactory factory = Persistence.createEntityManagerFactory("ljq");EntityManager em = factory.createEntityManager();em.getTransaction().begin();OrderItem item=em.getReference(OrderItem.class, (Serializable)3);em.remove(item);em.getTransaction().commit();em.close();factory.close();}//運行結果為://orderid:xxxx, amount:34.0//productName:足球price:20.0//productName:籃球price:25.0//=============== @Testpublic void find1(){EntityManagerFactory factory = Persistence.createEntityManagerFactory("ljq");EntityManager em = factory.createEntityManager();em.getTransaction().begin();List<Order> orders=em.createQuery("select o from Order o").getResultList();for(Order order:orders){System.out.println("orderid:"+order.getOrderid()+", "+"amount:"+order.getAmount());Set<OrderItem> orderItems=order.getItems();for(OrderItem item:orderItems){System.out.println("productName:"+item.getProductName()+"price:"+item.getSellPrice());}System.out.println("===============");}em.close();factory.close();}//運行結果為//productName:足球price:20.0//orderid:xxxx, amount:34.0//============//productName:籃球price:25.0//orderid:xxxx, amount:34.0//============ @Testpublic void find2(){EntityManagerFactory factory = Persistence.createEntityManagerFactory("ljq");EntityManager em = factory.createEntityManager();em.getTransaction().begin();List<OrderItem> items=em.createQuery("select o from OrderItem o").getResultList();for(OrderItem item:items){System.out.println("productName:"+item.getProductName()+"price:"+item.getSellPrice());Order order=item.getOrder();System.out.println("orderid:"+order.getOrderid()+", "+"amount:"+order.getAmount());System.out.println("============");}em.close();factory.close();}/*** 測試jpa環境是否搭建成功* */@Testpublic void test() {Persistence.createEntityManagerFactory("ljq");}}

總結

以上是生活随笔為你收集整理的jpa一对多映射案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品午夜无码专区 | 亚洲女人的天堂 | www在线播放 | 91极品身材尤物theporn | 中文天堂在线播放 | 丰满熟妇肥白一区二区在线 | 激情综合五月网 | av色在线观看 | 五月伊人网 | 久久婷五月天 | 国产精品福利影院 | 极品美女被c | 婷婷激情影院 | 中文字幕一区久久 | 亚洲午夜免费视频 | 国产日韩一区二区三区在线观看 | 国产第一毛片 | 少妇高潮一区二区三区四区 | 七仙女欲春2一级裸体片 | 相亲对象是问题学生动漫免费观看 | 欧美三级视频网站 | 日韩精品一二三四 | jizz日本在线 | 日韩美女av在线 | 亚洲国产综合在线 | 情欲超 | 在线 日本 制服 中文 欧美 | xxxxxxxx黄色片| 女生高潮视频在线观看 | 国产aⅴ精品一区二区果冻 台湾性生生活1 | 高清av一区二区三区 | 日韩精品一区在线观看 | 日韩无砖| 激情四射网 | 欧美粗大猛烈老熟妇 | 一区二区三区免费视频观看 | 日本在线成人 | 激情五月综合网 | 久久久久久久久久久av | 一呦二呦三呦精品网站 | 一区二区三区视频在线播放 | 俄罗斯破处 | 大肉大捧一进一出好爽视频 | 91av一区二区三区 | 在线观看av一区二区 | 黄色大片免费观看视频 | 在线爽| 可以免费看的av毛片 | 日韩精品国产一区二区 | 伊人av一区 | 国产熟妇一区二区三区aⅴ网站 | 亚洲精品在线观看网站 | 韩国美女啪啪 | 天天插插 | 欧美交换 | 澳门黄色一级片 | 欧美mv日韩mv国产网站 | 精精国产xxxx视频在线播放 | 影音先锋制服 | 午夜视频在线观看免费视频 | 999国产精品视频 | 国产麻豆一精品一男同 | 无毒黄色网址 | 亚洲成av人片一区二区 | 制服师生在线 | 黑人高潮一区二区三区在线看 | 性色视频 | 男人都懂的网址 | www.av.cn | 69影院少妇在线观看 | 伊人中文字幕在线观看 | 亚洲理论在线观看 | 日日碰狠狠添天天爽无码 | 天堂中文视频 | 精国产品一区二区三区a片 国产精品第一 | 三级av在线播放 | 轻轻草在线视频 | 天天干妹子 | 高清国产一区 | 222aaa| 另类小说婷婷 | 日韩免费av网站 | 午夜成人亚洲理伦片在线观看 | 亚洲高清视频网站 | 9l视频自拍九色9l视频 | 日本乱论视频 | av在线一区二区三区 | 成人av番号网 | 成人另类小说 | 亚洲成人一区 | 好看的毛片 | 国产网红在线 | 精品一区二区人妻 | 免看一级a毛片一片成人不卡 | 久久人人爽人人人人片 | 色窝窝综合色窝窝久久 | 美女操出白浆 | 中国av一区二区三区 | 黄网站免费在线观看 |