[JAVA-11226] Fix and update Hibernate OneToMany code (#12031)
This commit is contained in:
parent
813b27588e
commit
4ad546c702
|
@ -82,7 +82,7 @@
|
||||||
<!-- Spring -->
|
<!-- Spring -->
|
||||||
<org.springframework.version>5.0.2.RELEASE</org.springframework.version>
|
<org.springframework.version>5.0.2.RELEASE</org.springframework.version>
|
||||||
<org.springframework.data.version>1.10.6.RELEASE</org.springframework.data.version>
|
<org.springframework.data.version>1.10.6.RELEASE</org.springframework.data.version>
|
||||||
<hibernate-core.version>5.4.7.Final</hibernate-core.version>
|
<hibernate-core.version>5.6.7.Final</hibernate-core.version>
|
||||||
<maven.deploy.skip>true</maven.deploy.skip>
|
<maven.deploy.skip>true</maven.deploy.skip>
|
||||||
<spring-boot.version>2.1.7.RELEASE</spring-boot.version>
|
<spring-boot.version>2.1.7.RELEASE</spring-boot.version>
|
||||||
<h2.version>1.4.200</h2.version>
|
<h2.version>1.4.200</h2.version>
|
||||||
|
|
|
@ -1,34 +1,51 @@
|
||||||
package com.baeldung.hibernate.oneToMany.config;
|
package com.baeldung.hibernate.oneToMany.config;
|
||||||
|
|
||||||
|
import com.baeldung.hibernate.oneToMany.model.Cart;
|
||||||
|
import com.baeldung.hibernate.oneToMany.model.CartOIO;
|
||||||
|
import com.baeldung.hibernate.oneToMany.model.Item;
|
||||||
|
import com.baeldung.hibernate.oneToMany.model.ItemOIO;
|
||||||
import org.hibernate.SessionFactory;
|
import org.hibernate.SessionFactory;
|
||||||
import org.hibernate.boot.Metadata;
|
import org.hibernate.boot.Metadata;
|
||||||
import org.hibernate.boot.MetadataSources;
|
import org.hibernate.boot.MetadataSources;
|
||||||
|
import org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl;
|
||||||
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
|
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
|
||||||
import org.hibernate.service.ServiceRegistry;
|
import org.hibernate.service.ServiceRegistry;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
public class HibernateAnnotationUtil {
|
public class HibernateAnnotationUtil {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(HibernateAnnotationUtil.class);
|
||||||
|
|
||||||
private static SessionFactory sessionFactory;
|
private static SessionFactory sessionFactory;
|
||||||
|
|
||||||
|
public static SessionFactory getSessionFactory() {
|
||||||
|
if (sessionFactory == null) {
|
||||||
|
sessionFactory = buildSessionFactory();
|
||||||
|
}
|
||||||
|
return sessionFactory;
|
||||||
|
}
|
||||||
|
|
||||||
private static SessionFactory buildSessionFactory() {
|
private static SessionFactory buildSessionFactory() {
|
||||||
try {
|
try {
|
||||||
// Create the SessionFactory from hibernate-annotation.cfg.xml
|
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
|
||||||
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure("hibernate-annotation.cfg.xml").build();
|
.configure("hibernate-annotation.cfg.xml")
|
||||||
Metadata metadata = new MetadataSources(serviceRegistry).getMetadataBuilder().build();
|
.build();
|
||||||
SessionFactory sessionFactory = metadata.getSessionFactoryBuilder().build();
|
|
||||||
|
|
||||||
return sessionFactory;
|
Metadata metadata = new MetadataSources(serviceRegistry)
|
||||||
|
.addAnnotatedClass(Cart.class)
|
||||||
|
.addAnnotatedClass(CartOIO.class)
|
||||||
|
.addAnnotatedClass(Item.class)
|
||||||
|
.addAnnotatedClass(ItemOIO.class)
|
||||||
|
.getMetadataBuilder()
|
||||||
|
.applyImplicitNamingStrategy(ImplicitNamingStrategyJpaCompliantImpl.INSTANCE)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
return metadata.getSessionFactoryBuilder().build();
|
||||||
|
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
System.err.println("Initial SessionFactory creation failed." + ex);
|
LOGGER.error("Initial SessionFactory creation failed.", ex);
|
||||||
ex.printStackTrace();
|
|
||||||
throw new ExceptionInInitializerError(ex);
|
throw new ExceptionInInitializerError(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SessionFactory getSessionFactory() {
|
|
||||||
if (sessionFactory == null)
|
|
||||||
sessionFactory = buildSessionFactory();
|
|
||||||
return sessionFactory;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
package com.baeldung.hibernate.oneToMany.main;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.hibernate.Session;
|
||||||
|
import org.hibernate.SessionFactory;
|
||||||
|
import org.hibernate.Transaction;
|
||||||
|
|
||||||
|
import com.baeldung.hibernate.oneToMany.config.HibernateAnnotationUtil;
|
||||||
|
import com.baeldung.hibernate.oneToMany.model.Cart;
|
||||||
|
import com.baeldung.hibernate.oneToMany.model.Item;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class HibernateManyIsOwningSide {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(HibernateManyIsOwningSide.class);
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
Cart cart = new Cart();
|
||||||
|
Cart cart2 = new Cart();
|
||||||
|
|
||||||
|
Item item1 = new Item(cart);
|
||||||
|
Item item2 = new Item(cart2);
|
||||||
|
|
||||||
|
Set<Item> itemsSet = new HashSet<>();
|
||||||
|
itemsSet.add(item1);
|
||||||
|
itemsSet.add(item2);
|
||||||
|
cart.setItems(itemsSet);
|
||||||
|
|
||||||
|
// Get Session
|
||||||
|
SessionFactory sessionFactory = HibernateAnnotationUtil.getSessionFactory();
|
||||||
|
Session session = sessionFactory.getCurrentSession();
|
||||||
|
|
||||||
|
try {
|
||||||
|
LOGGER.info("Session created");
|
||||||
|
|
||||||
|
// start transaction
|
||||||
|
Transaction tx = session.beginTransaction();
|
||||||
|
|
||||||
|
// Save the Model object
|
||||||
|
session.save(cart);
|
||||||
|
session.save(cart2);
|
||||||
|
session.save(item1);
|
||||||
|
session.save(item2);
|
||||||
|
|
||||||
|
// Commit transaction
|
||||||
|
tx.commit();
|
||||||
|
|
||||||
|
session = sessionFactory.getCurrentSession();
|
||||||
|
tx = session.beginTransaction();
|
||||||
|
|
||||||
|
item1 = session.get(Item.class, 1L);
|
||||||
|
item2 = session.get(Item.class, 2L);
|
||||||
|
tx.commit();
|
||||||
|
|
||||||
|
LOGGER.info("item1 ID={}, Foreign Key CartOIO ID={}", item1.getId(), item1.getCart().getId());
|
||||||
|
LOGGER.info("item2 ID={}, Foreign Key CartOIO ID={}", item2.getId(), item2.getCart().getId());
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
LOGGER.error("Exception occurred", e);
|
||||||
|
} finally {
|
||||||
|
if (!sessionFactory.isClosed()) {
|
||||||
|
LOGGER.info("Closing SessionFactory");
|
||||||
|
sessionFactory.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,71 +0,0 @@
|
||||||
package com.baeldung.hibernate.oneToMany.main;
|
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.hibernate.Session;
|
|
||||||
import org.hibernate.SessionFactory;
|
|
||||||
import org.hibernate.Transaction;
|
|
||||||
|
|
||||||
import com.baeldung.hibernate.oneToMany.config.HibernateAnnotationUtil;
|
|
||||||
import com.baeldung.hibernate.oneToMany.model.Cart;
|
|
||||||
import com.baeldung.hibernate.oneToMany.model.Items;
|
|
||||||
import com.baeldung.hibernate.oneToMany.model.ItemsOIO;
|
|
||||||
|
|
||||||
public class HibernateManyisOwningSide {
|
|
||||||
public static void main(String[] args) {
|
|
||||||
|
|
||||||
Cart cart = new Cart();
|
|
||||||
Cart cart2 = new Cart();
|
|
||||||
|
|
||||||
Items item1 = new Items(cart);
|
|
||||||
Items item2 = new Items(cart2);
|
|
||||||
Set<Items> itemsSet = new HashSet<Items>();
|
|
||||||
itemsSet.add(item1);
|
|
||||||
itemsSet.add(item2);
|
|
||||||
|
|
||||||
cart.setItems(itemsSet);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SessionFactory sessionFactory = null;
|
|
||||||
Session session = null;
|
|
||||||
Transaction tx = null;
|
|
||||||
try {
|
|
||||||
// Get Session
|
|
||||||
sessionFactory = HibernateAnnotationUtil.getSessionFactory();
|
|
||||||
session = sessionFactory.getCurrentSession();
|
|
||||||
System.out.println("Session created");
|
|
||||||
// start transaction
|
|
||||||
tx = session.beginTransaction();
|
|
||||||
// Save the Model object
|
|
||||||
session.save(cart);
|
|
||||||
session.save(cart2);
|
|
||||||
session.save(item1);
|
|
||||||
session.save(item2);
|
|
||||||
// Commit transaction
|
|
||||||
tx.commit();
|
|
||||||
session = sessionFactory.getCurrentSession();
|
|
||||||
tx = session.beginTransaction();
|
|
||||||
|
|
||||||
item1 = (Items) session.get(Items.class, new Long(1));
|
|
||||||
item2 = (Items) session.get(Items.class, new Long(2));
|
|
||||||
tx.commit();
|
|
||||||
|
|
||||||
|
|
||||||
System.out.println("item1 ID=" + item1.getId() + ", Foreign Key CartOIO ID=" + item1.getCart()
|
|
||||||
.getId());
|
|
||||||
System.out.println("item2 ID=" + item2.getId() + ", Foreign Key CartOIO ID=" + item2.getCart()
|
|
||||||
.getId());
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
System.out.println("Exception occured. " + e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
} finally {
|
|
||||||
if (!sessionFactory.isClosed()) {
|
|
||||||
System.out.println("Closing SessionFactory");
|
|
||||||
sessionFactory.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -9,57 +9,59 @@ import org.hibernate.Transaction;
|
||||||
|
|
||||||
import com.baeldung.hibernate.oneToMany.config.HibernateAnnotationUtil;
|
import com.baeldung.hibernate.oneToMany.config.HibernateAnnotationUtil;
|
||||||
import com.baeldung.hibernate.oneToMany.model.CartOIO;
|
import com.baeldung.hibernate.oneToMany.model.CartOIO;
|
||||||
import com.baeldung.hibernate.oneToMany.model.ItemsOIO;
|
import com.baeldung.hibernate.oneToMany.model.ItemOIO;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class HibernateOneIsOwningSide {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(HibernateOneIsOwningSide.class);
|
||||||
|
|
||||||
public class HibernateOneisOwningSide {
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
||||||
CartOIO cart = new CartOIO();
|
CartOIO cart = new CartOIO();
|
||||||
CartOIO cart2 = new CartOIO();
|
CartOIO cart2 = new CartOIO();
|
||||||
|
|
||||||
ItemsOIO item1 = new ItemsOIO(cart);
|
ItemOIO item1 = new ItemOIO(cart);
|
||||||
ItemsOIO item2 = new ItemsOIO(cart2);
|
ItemOIO item2 = new ItemOIO(cart2);
|
||||||
Set<ItemsOIO> itemsSet = new HashSet<ItemsOIO>();
|
Set<ItemOIO> itemsSet = new HashSet<>();
|
||||||
itemsSet.add(item1);
|
itemsSet.add(item1);
|
||||||
itemsSet.add(item2);
|
itemsSet.add(item2);
|
||||||
|
|
||||||
cart.setItems(itemsSet);
|
cart.setItems(itemsSet);
|
||||||
|
|
||||||
SessionFactory sessionFactory = null;
|
SessionFactory sessionFactory = HibernateAnnotationUtil.getSessionFactory();
|
||||||
Session session = null;
|
Session session = sessionFactory.getCurrentSession();
|
||||||
Transaction tx = null;
|
LOGGER.info("Session created");
|
||||||
|
|
||||||
|
Transaction tx;
|
||||||
try {
|
try {
|
||||||
// Get Session
|
|
||||||
sessionFactory = HibernateAnnotationUtil.getSessionFactory();
|
|
||||||
session = sessionFactory.getCurrentSession();
|
|
||||||
System.out.println("Session created");
|
|
||||||
// start transaction
|
// start transaction
|
||||||
tx = session.beginTransaction();
|
tx = session.beginTransaction();
|
||||||
|
|
||||||
// Save the Model object
|
// Save the Model object
|
||||||
session.save(cart);
|
session.save(cart);
|
||||||
session.save(cart2);
|
session.save(cart2);
|
||||||
session.save(item1);
|
session.save(item1);
|
||||||
session.save(item2);
|
session.save(item2);
|
||||||
|
|
||||||
// Commit transaction
|
// Commit transaction
|
||||||
tx.commit();
|
tx.commit();
|
||||||
|
|
||||||
session = sessionFactory.getCurrentSession();
|
session = sessionFactory.getCurrentSession();
|
||||||
tx = session.beginTransaction();
|
tx = session.beginTransaction();
|
||||||
item1 = (ItemsOIO) session.get(ItemsOIO.class, new Long(1));
|
item1 = session.get(ItemOIO.class, 1L);
|
||||||
item2 = (ItemsOIO) session.get(ItemsOIO.class, new Long(2));
|
item2 = session.get(ItemOIO.class, 2L);
|
||||||
tx.commit();
|
tx.commit();
|
||||||
|
|
||||||
System.out.println("item1 ID=" + item1.getId() + ", Foreign Key CartOIO ID=" + item1.getCartOIO()
|
LOGGER.info("item1 ID={}, Foreign Key CartOIO ID={}", item1.getId(), item1.getCartOIO().getId());
|
||||||
.getId());
|
LOGGER.info("item2 ID={}, Foreign Key CartOIO ID={}", item2.getId(), item2.getCartOIO().getId());
|
||||||
System.out.println("item2 ID=" + item2.getId() + ", Foreign Key CartOIO ID=" + item2.getCartOIO()
|
|
||||||
.getId());
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println("Exception occured. " + e.getMessage());
|
LOGGER.error("Exception occurred", e);
|
||||||
e.printStackTrace();
|
|
||||||
} finally {
|
} finally {
|
||||||
if (!sessionFactory.isClosed()) {
|
if (!sessionFactory.isClosed()) {
|
||||||
System.out.println("Closing SessionFactory");
|
LOGGER.info("Closing SessionFactory");
|
||||||
sessionFactory.close();
|
sessionFactory.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -9,52 +9,53 @@ import org.hibernate.Transaction;
|
||||||
|
|
||||||
import com.baeldung.hibernate.oneToMany.config.HibernateAnnotationUtil;
|
import com.baeldung.hibernate.oneToMany.config.HibernateAnnotationUtil;
|
||||||
import com.baeldung.hibernate.oneToMany.model.Cart;
|
import com.baeldung.hibernate.oneToMany.model.Cart;
|
||||||
import com.baeldung.hibernate.oneToMany.model.Items;
|
import com.baeldung.hibernate.oneToMany.model.Item;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
public class HibernateOneToManyAnnotationMain {
|
public class HibernateOneToManyAnnotationMain {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(HibernateOneToManyAnnotationMain.class);
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
||||||
Cart cart = new Cart();
|
Cart cart = new Cart();
|
||||||
|
|
||||||
Items item1 = new Items(cart);
|
Item item1 = new Item(cart);
|
||||||
Items item2 = new Items(cart);
|
Item item2 = new Item(cart);
|
||||||
Set<Items> itemsSet = new HashSet<Items>();
|
Set<Item> itemsSet = new HashSet<>();
|
||||||
itemsSet.add(item1);
|
itemsSet.add(item1);
|
||||||
itemsSet.add(item2);
|
itemsSet.add(item2);
|
||||||
|
|
||||||
cart.setItems(itemsSet);
|
cart.setItems(itemsSet);
|
||||||
|
|
||||||
|
SessionFactory sessionFactory = HibernateAnnotationUtil.getSessionFactory();
|
||||||
|
Session session = sessionFactory.getCurrentSession();
|
||||||
|
LOGGER.info("Session created");
|
||||||
|
|
||||||
SessionFactory sessionFactory = null;
|
|
||||||
Session session = null;
|
|
||||||
Transaction tx = null;
|
|
||||||
try {
|
try {
|
||||||
// Get Session
|
|
||||||
sessionFactory = HibernateAnnotationUtil.getSessionFactory();
|
|
||||||
session = sessionFactory.getCurrentSession();
|
|
||||||
System.out.println("Session created");
|
|
||||||
// start transaction
|
// start transaction
|
||||||
tx = session.beginTransaction();
|
Transaction tx = session.beginTransaction();
|
||||||
|
|
||||||
// Save the Model object
|
// Save the Model object
|
||||||
session.save(cart);
|
session.save(cart);
|
||||||
session.save(item1);
|
session.save(item1);
|
||||||
session.save(item2);
|
session.save(item2);
|
||||||
|
|
||||||
// Commit transaction
|
// Commit transaction
|
||||||
tx.commit();
|
tx.commit();
|
||||||
System.out.println("Cart ID=" + cart.getId());
|
|
||||||
System.out.println("item1 ID=" + item1.getId() + ", Foreign Key Cart ID=" + item1.getCart().getId());
|
LOGGER.info("Cart ID={}", cart.getId());
|
||||||
System.out.println("item2 ID=" + item2.getId() + ", Foreign Key Cart ID=" + item1.getCart().getId());
|
LOGGER.info("item1 ID={}, Foreign Key Cart ID={}", item1.getId(), item1.getCart().getId());
|
||||||
|
LOGGER.info("item2 ID={}, Foreign Key Cart ID={}", item2.getId(), item2.getCart().getId());
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println("Exception occured. " + e.getMessage());
|
LOGGER.error("Exception occurred", e);
|
||||||
e.printStackTrace();
|
|
||||||
} finally {
|
} finally {
|
||||||
if (!sessionFactory.isClosed()) {
|
if (!sessionFactory.isClosed()) {
|
||||||
System.out.println("Closing SessionFactory");
|
LOGGER.info("Closing SessionFactory");
|
||||||
sessionFactory.close();
|
sessionFactory.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,9 +19,8 @@ public class Cart {
|
||||||
@Column(name = "cart_id")
|
@Column(name = "cart_id")
|
||||||
private long id;
|
private long id;
|
||||||
|
|
||||||
|
|
||||||
@OneToMany(mappedBy = "cart")
|
@OneToMany(mappedBy = "cart")
|
||||||
private Set<Items> items;
|
private Set<Item> items;
|
||||||
|
|
||||||
public long getId() {
|
public long getId() {
|
||||||
return id;
|
return id;
|
||||||
|
@ -31,12 +30,11 @@ public class Cart {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Set<Item> getItems() {
|
||||||
public Set<Items> getItems() {
|
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setItems(Set<Items> items) {
|
public void setItems(Set<Item> items) {
|
||||||
this.items = items;
|
this.items = items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,6 @@ import javax.persistence.JoinColumn;
|
||||||
import javax.persistence.OneToMany;
|
import javax.persistence.OneToMany;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "CARTOIO")
|
@Table(name = "CARTOIO")
|
||||||
public class CartOIO {
|
public class CartOIO {
|
||||||
|
@ -21,7 +19,7 @@ public class CartOIO {
|
||||||
|
|
||||||
@OneToMany
|
@OneToMany
|
||||||
@JoinColumn(name = "cart_id") // we need to duplicate the physical information
|
@JoinColumn(name = "cart_id") // we need to duplicate the physical information
|
||||||
private Set<ItemsOIO> items;
|
private Set<ItemOIO> items;
|
||||||
|
|
||||||
public long getId() {
|
public long getId() {
|
||||||
return id;
|
return id;
|
||||||
|
@ -31,11 +29,11 @@ public class CartOIO {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<ItemsOIO> getItems() {
|
public Set<ItemOIO> getItems() {
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setItems(Set<ItemsOIO> items) {
|
public void setItems(Set<ItemOIO> items) {
|
||||||
this.items = items;
|
this.items = items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,23 +11,22 @@ import javax.persistence.Table;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "ITEMS")
|
@Table(name = "ITEMS")
|
||||||
public class Items {
|
public class Item {
|
||||||
|
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
@Column(name = "id")
|
@Column(name = "id")
|
||||||
private long id;
|
private long id;
|
||||||
|
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
@JoinColumn(name = "cart_id", nullable = false)
|
@JoinColumn(name = "cart_id", nullable = false)
|
||||||
private Cart cart;
|
private Cart cart;
|
||||||
|
|
||||||
// Hibernate requires no-args constructor
|
// Hibernate requires no-args constructor
|
||||||
public Items() {
|
public Item() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Items(Cart c) {
|
public Item(Cart c) {
|
||||||
this.cart = c;
|
this.cart = c;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ import javax.persistence.Table;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "ITEMSOIO")
|
@Table(name = "ITEMSOIO")
|
||||||
public class ItemsOIO {
|
public class ItemOIO {
|
||||||
|
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
@ -21,10 +21,10 @@ public class ItemsOIO {
|
||||||
private CartOIO cart;
|
private CartOIO cart;
|
||||||
|
|
||||||
// Hibernate requires no-args constructor
|
// Hibernate requires no-args constructor
|
||||||
public ItemsOIO() {
|
public ItemOIO() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemsOIO(CartOIO c) {
|
public ItemOIO(CartOIO c) {
|
||||||
this.cart = c;
|
this.cart = c;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<!DOCTYPE hibernate-configuration PUBLIC
|
||||||
|
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
|
||||||
|
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
|
||||||
|
|
||||||
|
<hibernate-configuration>
|
||||||
|
<session-factory>
|
||||||
|
<property name="hibernate.connection.driver_class">org.h2.Driver</property>
|
||||||
|
<property name="hibernate.connection.username">sa</property>
|
||||||
|
<property name="hibernate.connection.password"/>
|
||||||
|
<property name="hibernate.connection.url">jdbc:h2:mem:spring_hibernate_one_to_many</property>
|
||||||
|
|
||||||
|
<property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
|
||||||
|
<property name="hibernate.current_session_context_class">thread</property>
|
||||||
|
<property name="hibernate.show_sql">true</property>
|
||||||
|
<property name="hbm2ddl.auto">create</property>
|
||||||
|
</session-factory>
|
||||||
|
</hibernate-configuration>
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
|
||||||
|
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
|
||||||
|
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
|
||||||
|
<layout class="org.apache.log4j.PatternLayout">
|
||||||
|
<param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
|
||||||
|
</layout>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<logger name="org.hibernate">
|
||||||
|
<level value="info" />
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<logger name="org.hibernate.SQL">
|
||||||
|
<level value="info" />
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<logger name="org.hibernate.type.descriptor.sql">
|
||||||
|
<level value="info" />
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<logger name="org.hibernate.stat">
|
||||||
|
<level value="info" />
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<root>
|
||||||
|
<priority value ="info" />
|
||||||
|
<appender-ref ref="STDOUT" />
|
||||||
|
</root>
|
||||||
|
|
||||||
|
</log4j:configuration>
|
|
@ -1,26 +1,21 @@
|
||||||
package com.baeldung.hibernate.oneToMany.main;
|
package com.baeldung.hibernate.oneToMany.main;
|
||||||
|
|
||||||
import static org.junit.Assert.assertNotNull;
|
import com.baeldung.hibernate.oneToMany.config.HibernateAnnotationUtil;
|
||||||
import static org.junit.Assert.assertNull;
|
import com.baeldung.hibernate.oneToMany.model.Cart;
|
||||||
|
import com.baeldung.hibernate.oneToMany.model.Item;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.hibernate.Session;
|
import org.hibernate.Session;
|
||||||
import org.hibernate.SessionFactory;
|
import org.hibernate.SessionFactory;
|
||||||
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
|
|
||||||
import org.hibernate.cfg.Configuration;
|
|
||||||
import org.hibernate.dialect.H2Dialect;
|
|
||||||
import org.hibernate.service.ServiceRegistry;
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.AfterClass;
|
import org.junit.AfterClass;
|
||||||
import org.junit.Assert;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import com.baeldung.hibernate.oneToMany.model.Cart;
|
import java.util.HashSet;
|
||||||
import com.baeldung.hibernate.oneToMany.model.Items;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertNull;
|
||||||
|
|
||||||
public class HibernateOneToManyAnnotationMainIntegrationTest {
|
public class HibernateOneToManyAnnotationMainIntegrationTest {
|
||||||
|
|
||||||
|
@ -28,20 +23,9 @@ public class HibernateOneToManyAnnotationMainIntegrationTest {
|
||||||
|
|
||||||
private Session session;
|
private Session session;
|
||||||
|
|
||||||
public HibernateOneToManyAnnotationMainIntegrationTest() {
|
|
||||||
}
|
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void beforeTests() {
|
public static void beforeTests() {
|
||||||
Configuration configuration = new Configuration().addAnnotatedClass(Cart.class).addAnnotatedClass(Items.class)
|
sessionFactory = HibernateAnnotationUtil.getSessionFactory();
|
||||||
.setProperty("hibernate.dialect", H2Dialect.class.getName())
|
|
||||||
.setProperty("hibernate.connection.driver_class", org.h2.Driver.class.getName())
|
|
||||||
.setProperty("hibernate.connection.url", "jdbc:h2:mem:test")
|
|
||||||
.setProperty("hibernate.connection.username", "sa").setProperty("hibernate.connection.password", "")
|
|
||||||
.setProperty("hibernate.hbm2ddl.auto", "update");
|
|
||||||
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
|
|
||||||
.applySettings(configuration.getProperties()).build();
|
|
||||||
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
|
@ -52,32 +36,38 @@ public class HibernateOneToManyAnnotationMainIntegrationTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenSession_checkIfDatabaseIsEmpty() {
|
public void givenSession_checkIfDatabaseIsEmpty() {
|
||||||
Cart cart = (Cart) session.get(Cart.class, new Long(1));
|
Cart cart = session.get(Cart.class, 1L);
|
||||||
assertNull(cart);
|
assertNull(cart);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenSession_checkIfDatabaseIsPopulated_afterCommit() {
|
public void givenSession_checkIfDatabaseIsPopulated_afterCommit() {
|
||||||
Cart cart = new Cart();
|
Cart cart = new Cart();
|
||||||
Set<Items> cartItems = new HashSet<>();
|
Set<Item> cartItems = cart.getItems();
|
||||||
cartItems = cart.getItems();
|
|
||||||
Assert.assertNull(cartItems);
|
assertNull(cartItems);
|
||||||
Items item1 = new Items();
|
|
||||||
|
Item item1 = new Item();
|
||||||
item1.setCart(cart);
|
item1.setCart(cart);
|
||||||
|
|
||||||
assertNotNull(item1);
|
assertNotNull(item1);
|
||||||
Set<Items> itemsSet = new HashSet<Items>();
|
|
||||||
itemsSet.add(item1);
|
Set<Item> itemSet = new HashSet<>();
|
||||||
assertNotNull(itemsSet);
|
itemSet.add(item1);
|
||||||
cart.setItems(itemsSet);
|
|
||||||
|
assertNotNull(itemSet);
|
||||||
|
cart.setItems(itemSet);
|
||||||
|
|
||||||
assertNotNull(cart);
|
assertNotNull(cart);
|
||||||
|
|
||||||
session.persist(cart);
|
session.persist(cart);
|
||||||
session.getTransaction().commit();
|
session.getTransaction().commit();
|
||||||
session.close();
|
session.close();
|
||||||
|
|
||||||
session = sessionFactory.openSession();
|
session = sessionFactory.openSession();
|
||||||
session.beginTransaction();
|
session.beginTransaction();
|
||||||
cart = (Cart) session.get(Cart.class, new Long(1));
|
cart = session.get(Cart.class, 1L);
|
||||||
|
|
||||||
assertNotNull(cart);
|
assertNotNull(cart);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,31 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
|
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
|
||||||
|
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
|
||||||
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
|
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
|
||||||
<layout class="org.apache.log4j.PatternLayout">
|
<layout class="org.apache.log4j.PatternLayout">
|
||||||
<param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
|
<param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
|
||||||
</layout>
|
</layout>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<logger name="org.hibernate">
|
<logger name="org.hibernate">
|
||||||
<level value="info" />
|
<level value="info" />
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
<logger name="org.hibernate.SQL">
|
<logger name="org.hibernate.SQL">
|
||||||
<level value="info" />
|
<level value="info" />
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
<logger name="org.hibernate.type.descriptor.sql">
|
<logger name="org.hibernate.type.descriptor.sql">
|
||||||
<level value="info" />
|
<level value="info" />
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
<logger name="org.hibernate.stat">
|
<logger name="org.hibernate.stat">
|
||||||
<level value="info" />
|
<level value="info" />
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
<root>
|
<root>
|
||||||
<priority value ="info" />
|
<priority value ="info" />
|
||||||
<appender-ref ref="STDOUT" />
|
<appender-ref ref="STDOUT" />
|
||||||
</root>
|
</root>
|
||||||
</configuration>
|
|
||||||
|
</log4j:configuration>
|
Binary file not shown.
Before Width: | Height: | Size: 1.1 KiB |
Loading…
Reference in New Issue