Hibernate/JPA Sorting Repo Compiled in Eclipse
This commit is contained in:
parent
08aa91739e
commit
942b186e60
|
@ -30,6 +30,11 @@
|
|||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.hibernate.eclipse.console.hibernateBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.springframework.ide.eclipse.core.springnature</nature>
|
||||
|
@ -39,5 +44,6 @@
|
|||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
|
||||
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
|
||||
<nature>org.hibernate.eclipse.console.hibernateNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
default.configuration=
|
||||
eclipse.preferences.version=1
|
||||
hibernate3.enabled=true
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
|
||||
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
|
||||
<!-- Generated 29-abr-2014 15:39:59 by Hibernate Tools 3.4.0.CR1 -->
|
||||
<hibernate-mapping>
|
||||
<class name="org.baeldung.persistence.model.Bar" table="BAR">
|
||||
<id name="id" type="int">
|
||||
<column name="ID" />
|
||||
<generator class="assigned" />
|
||||
</id>
|
||||
<set name="fooSet" table="FOO" inverse="false" lazy="true" order-by="NAME DESC">
|
||||
<key>
|
||||
<column name="BAR_ID" />
|
||||
</key>
|
||||
<one-to-many class="org.baeldung.persistence.model.Foo" />
|
||||
</set>
|
||||
<property name="name" type="java.lang.String">
|
||||
<column name="NAME" />
|
||||
</property>
|
||||
</class>
|
||||
</hibernate-mapping>
|
|
@ -36,8 +36,8 @@ public class Bar implements Serializable {
|
|||
public Set<Foo> getFooSet() {
|
||||
return fooSet;
|
||||
}
|
||||
|
||||
public void setFooList(Set<Foo> fooSet) {
|
||||
|
||||
public void setFooSet(final Set<Foo> fooSet) {
|
||||
this.fooSet = fooSet;
|
||||
}
|
||||
|
||||
|
@ -45,7 +45,7 @@ public class Bar implements Serializable {
|
|||
return this.id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
public void setId(final int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
|
@ -53,7 +53,7 @@ public class Bar implements Serializable {
|
|||
return this.name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
public void setName(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
//
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
|
||||
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
|
||||
<!-- Generated 23-abr-2014 18:00:30 by Hibernate Tools 3.4.0.CR1 -->
|
||||
<hibernate-mapping>
|
||||
<class name="org.baeldung.persistence.model.Foo" table="FOO">
|
||||
<id name="id" type="int">
|
||||
<column name="ID" />
|
||||
<generator class="native" />
|
||||
</id>
|
||||
<property name="name" type="java.lang.String">
|
||||
<column name="NAME" />
|
||||
</property>
|
||||
<many-to-one name="bar" class="org.baeldung.persistence.model.Bar" fetch="join" >
|
||||
<column name="BAR_ID" />
|
||||
</many-to-one>
|
||||
|
||||
|
||||
|
||||
</class>
|
||||
</hibernate-mapping>
|
|
@ -2,46 +2,61 @@ package org.baeldung.persistence.model;
|
|||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.ManyToOne;
|
||||
|
||||
import org.hibernate.annotations.Fetch;
|
||||
import org.hibernate.annotations.FetchMode;
|
||||
|
||||
@Entity
|
||||
public class Foo implements Serializable {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private long id;
|
||||
|
||||
@Column(nullable = false)
|
||||
private String name;
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public Foo() {
|
||||
super();
|
||||
|
||||
}
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private long id;
|
||||
private String name;
|
||||
@ManyToOne(targetEntity = Bar.class)
|
||||
@JoinColumn(name = "BAR_ID")
|
||||
@Fetch(FetchMode.JOIN)
|
||||
private Bar bar = new Bar();
|
||||
|
||||
public Bar getBar() {
|
||||
return bar;
|
||||
}
|
||||
|
||||
public Foo(final String name) {
|
||||
super();
|
||||
|
||||
this.name = name;
|
||||
public void setBar(final Bar bar) {
|
||||
this.bar = bar;
|
||||
}
|
||||
|
||||
// API
|
||||
public int getBar_Id() {
|
||||
return bar_Id;
|
||||
}
|
||||
|
||||
public void setBar_Id(final int bar_Id) {
|
||||
this.bar_Id = bar_Id;
|
||||
}
|
||||
|
||||
private int bar_Id;
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(final long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
<?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>
|
||||
<!-- Database connection settings -->
|
||||
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
|
||||
<property name="connection.url">jdbc:mysql://localhost:3306/HIBERTEST2_TEST</property>
|
||||
<property name="connection.username">root</property>
|
||||
<property name="connection.password"></property>
|
||||
|
||||
<!-- JDBC connection pool (use the built-in) -->
|
||||
<property name="connection.pool_size">1</property>
|
||||
|
||||
<!-- SQL dialect -->
|
||||
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
|
||||
|
||||
<!-- Enable Hibernate's automatic session context management -->
|
||||
<property name="current_session_context_class">thread</property>
|
||||
|
||||
<!-- Disable the second-level cache -->
|
||||
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
|
||||
|
||||
<!-- Echo all executed SQL to stdout -->
|
||||
<property name="show_sql">true</property>
|
||||
|
||||
<!-- Drop and re-create the database schema on startup -->
|
||||
|
||||
<mapping resource="org//baeldung//persistence//model//Foo.hbm.xml"/>
|
||||
<mapping resource="org//baeldung//persistence//model//Bar.hbm.xml"/>
|
||||
</session-factory>
|
||||
|
||||
</hibernate-configuration>
|
|
@ -1,26 +1,13 @@
|
|||
package org.baeldung.persistence.service;
|
||||
|
||||
import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
|
||||
import static org.junit.Assert.assertNull;
|
||||
|
||||
import org.baeldung.persistence.model.Foo;
|
||||
import org.baeldung.persistence.service.IFooService;
|
||||
import org.baeldung.spring.PersistenceConfig;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.dao.DataAccessException;
|
||||
import org.springframework.dao.DataIntegrityViolationException;
|
||||
import org.springframework.dao.InvalidDataAccessApiUsageException;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.test.context.support.AnnotationConfigContextLoader;
|
||||
import static org.junit.Assert.*;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import org.junit.After;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.baeldung.persistence.model.Bar;
|
||||
import org.baeldung.persistence.model.Foo;
|
||||
import org.baeldung.spring.PersistenceConfig;
|
||||
import org.hibernate.Criteria;
|
||||
import org.hibernate.NullPrecedence;
|
||||
import org.hibernate.Query;
|
||||
|
@ -29,8 +16,14 @@ import org.hibernate.SessionFactory;
|
|||
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
|
||||
import org.hibernate.cfg.Configuration;
|
||||
import org.hibernate.criterion.Order;
|
||||
import com.cc.example.hibernate.Foo;
|
||||
import com.cc.example.hibernate.Bar;
|
||||
import org.junit.After;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.test.context.support.AnnotationConfigContextLoader;
|
||||
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class)
|
||||
|
@ -81,7 +74,6 @@ public class FooSortingServiceTest {
|
|||
System.out.println("Name: " + foo.getName() + ", Id: " + foo.getId());
|
||||
}
|
||||
sess.getTransaction().commit();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -96,7 +88,6 @@ public class FooSortingServiceTest {
|
|||
|
||||
}
|
||||
sess.getTransaction().commit();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -108,10 +99,9 @@ public class FooSortingServiceTest {
|
|||
for (final Foo foo : fooList) {
|
||||
System.out.println("Name: " + foo.getName() + ", Id: " + foo.getId()
|
||||
|
||||
);
|
||||
);
|
||||
}
|
||||
sess.getTransaction().commit();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -123,10 +113,9 @@ public class FooSortingServiceTest {
|
|||
for (final Foo foo : fooList) {
|
||||
System.out.println("Name: " + foo.getName() + ", Id: " + foo.getId()
|
||||
|
||||
);
|
||||
);
|
||||
}
|
||||
sess.getTransaction().commit();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -139,7 +128,6 @@ public class FooSortingServiceTest {
|
|||
System.out.println("Name: " + foo.getName() + ", Id: " + foo.getId());
|
||||
}
|
||||
sess.getTransaction().commit();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -152,7 +140,6 @@ public class FooSortingServiceTest {
|
|||
System.out.println("Id: " + foo.getId() + ", FirstName: " + foo.getName());
|
||||
}
|
||||
sess.getTransaction().commit();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -166,7 +153,6 @@ public class FooSortingServiceTest {
|
|||
System.out.println("Id: " + foo.getId() + ", FirstName: " + foo.getName());
|
||||
}
|
||||
sess.getTransaction().commit();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -178,10 +164,8 @@ public class FooSortingServiceTest {
|
|||
assertNull(fooList.get(fooList.toArray().length - 1).getName());
|
||||
for (final Foo foo : fooList) {
|
||||
System.out.println("Id: " + foo.getId() + ", FirstName: " + foo.getName());
|
||||
|
||||
}
|
||||
sess.getTransaction().commit();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -206,7 +190,7 @@ public class FooSortingServiceTest {
|
|||
final Query query = sess.createQuery(hql);
|
||||
final List<Bar> barList = query.list();
|
||||
for (final Bar bar : barList) {
|
||||
final Set<Foo> fooSet = bar.getFooList();
|
||||
final Set<Foo> fooSet = bar.getFooSet();
|
||||
System.out.println("Bar Id:" + bar.getId());
|
||||
for (final Foo foo : fooSet) {
|
||||
System.out.println("FooName:" + foo.getName());
|
||||
|
|
|
@ -22,11 +22,7 @@
|
|||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
|
|
|
@ -30,6 +30,11 @@
|
|||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.hibernate.eclipse.console.hibernateBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.springframework.ide.eclipse.core.springnature</nature>
|
||||
|
@ -39,5 +44,6 @@
|
|||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
|
||||
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
|
||||
<nature>org.hibernate.eclipse.console.hibernateNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
default.configuration=
|
||||
eclipse.preferences.version=1
|
||||
hibernate3.enabled=true
|
|
@ -1,65 +1,69 @@
|
|||
package org.baeldung.persistence.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
import javax.persistence.Column;
|
||||
import java.util.List;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.FetchType;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.OrderBy;
|
||||
|
||||
@Entity
|
||||
public class Bar implements Serializable {
|
||||
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private int id;
|
||||
|
||||
|
||||
@OneToMany(mappedBy = "bar", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
|
||||
@OrderBy("name ASC")
|
||||
List<Foo> fooList;
|
||||
|
||||
|
||||
private String name;
|
||||
|
||||
|
||||
public Bar(){
|
||||
super();
|
||||
}
|
||||
|
||||
|
||||
public Bar(final String name){
|
||||
super();
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
//API
|
||||
|
||||
|
||||
public List<Foo> getFooList() {
|
||||
return fooList;
|
||||
}
|
||||
|
||||
public void setFooList(List<Foo> fooList) {
|
||||
|
||||
public void setFooList(final List<Foo> fooList) {
|
||||
this.fooList = fooList;
|
||||
}
|
||||
|
||||
|
||||
public int getId() {
|
||||
return this.id;
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
|
||||
public void setId(final int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
|
||||
public String getName() {
|
||||
return this.name;
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
|
||||
public void setName(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
|
@ -67,7 +71,7 @@ public class Bar implements Serializable {
|
|||
result = prime * result + ((name == null) ? 0 : name.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(final Object obj) {
|
||||
if (this == obj)
|
||||
|
@ -84,12 +88,12 @@ public class Bar implements Serializable {
|
|||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
final StringBuilder builder = new StringBuilder();
|
||||
builder.append("Bar [name=").append(name).append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,21 +1,20 @@
|
|||
package org.baeldung.persistence.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
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 Foo implements Serializable {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private long id;
|
||||
|
||||
@Column(nullable = false)
|
||||
private String name;
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public Foo() {
|
||||
super();
|
||||
|
@ -27,13 +26,30 @@ public class Foo implements Serializable {
|
|||
this.name = name;
|
||||
}
|
||||
|
||||
// API
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
@Column(name = "ID")
|
||||
private long id;
|
||||
@Column(name = "NAME")
|
||||
private String name;
|
||||
|
||||
@ManyToOne(targetEntity = Bar.class, fetch = FetchType.EAGER)
|
||||
@JoinColumn(name = "BAR_ID")
|
||||
private Bar bar;
|
||||
|
||||
public Bar getBar() {
|
||||
return bar;
|
||||
}
|
||||
|
||||
public void setBar(final Bar bar) {
|
||||
this.bar = bar;
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(final long id) {
|
||||
public void setId(final int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
|
@ -45,8 +61,6 @@ public class Foo implements Serializable {
|
|||
this.name = name;
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
|
||||
<persistence-unit name="punit" >
|
||||
<class>org.baeldung.persistence.model.Foo</class>
|
||||
<class>org.baeldung.persistence.model.Bar</class>
|
||||
<properties>
|
||||
<property name="javax.persistence.jdbc.user" value="root"/>
|
||||
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
|
||||
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/HIBERTEST"/>
|
||||
<property name="javax.persistence.ddl-generation" value="drop-and-create-tables"/>
|
||||
<property name="javax.persistence.logging.level" value="INFO"/>
|
||||
<property name = "hibernate.show_sql" value = "true" />
|
||||
</properties>
|
||||
|
||||
</persistence-unit>
|
||||
</persistence>
|
|
@ -1,7 +1,9 @@
|
|||
package org.baeldung.persistence.service;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.EntityManagerFactory;
|
||||
import javax.persistence.EntityTransaction;
|
||||
|
@ -11,11 +13,13 @@ import javax.persistence.TypedQuery;
|
|||
import javax.persistence.criteria.CriteriaBuilder;
|
||||
import javax.persistence.criteria.CriteriaQuery;
|
||||
import javax.persistence.criteria.Root;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import org.baeldung.persistence.model.Bar;
|
||||
import org.baeldung.persistence.model.Foo;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import com.cc.jpa.example.Foo;
|
||||
import com.cc.jpa.example.Bar;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
public class FooServiceSortingTests {
|
||||
private static EntityManager entityManager;
|
||||
|
@ -162,4 +166,5 @@ public class FooServiceSortingTests {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue