JPA NamedQuery示例,jpanamedquery示例,package cn.o
分享于 点击 41737 次 点评:83
JPA NamedQuery示例,jpanamedquery示例,package cn.o
package cn.outofmemory.snippets.enterprise;import java.util.Date;import java.util.List;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence;import javax.persistence.Query;public class NamedQueryWithEntityInJPA { @SuppressWarnings("unchecked") public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyPersistenceUnit"); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); Employee employee1 = new Employee(); employee1.setName("Jack"); employee1.setSurname("Thomson"); employee1.setTitle("QA Engineer"); employee1.setCreated(new Date()); em.persist(employee1); Employee employee2 = new Employee(); employee2.setName("Mary"); employee2.setSurname("Nickolson"); employee2.setTitle("QA Engineer"); employee2.setCreated(new Date()); em.persist(employee2); em.getTransaction().commit(); em.getTransaction().begin(); Query query = em.createNamedQuery("findEmployeeByName"); query.setParameter(1, "Jack"); List<Employee> employees = (List<Employee>) query.getResultList(); System.out.println("employees " + employees); em.getTransaction().commit(); em.close(); emf.close(); }}
package cn.outofmemory.snippets.enterprise;import java.util.ArrayList;import java.util.Collection;import java.util.Date;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.JoinTable;import javax.persistence.ManyToOne;import javax.persistence.NamedQuery;import javax.persistence.OneToMany;@Entity@NamedQuery(name="findEmployeeByName", query="SELECT e FROM Employee e " + "WHERE e.name = ?1")public class Employee { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id; private String name; private String surname; private String title; private Date created; @OneToMany @JoinTable(name = "EMP_PHONE", joinColumns = @JoinColumn(name = "EMP_ID"), inverseJoinColumns = @JoinColumn(name = "PHONE_ID")) private Collection<Phone> phones; @ManyToOne private Department department; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSurname() { return surname; } public void setSurname(String surname) { this.surname = surname; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Date getCreated() { return created; } public void setCreated(Date created) { this.created = created; } public void addPhone(Phone phone) { if (phones==null) { phones = new ArrayList<Phone>(); } if (!phones.contains(phone)) { phones.add(phone); } } public Collection<Phone> getPhones() { return phones; } public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } @Override public String toString() { return "Employee [id=" + id + ", name=" + name + ", surname=" + surname + ", title=" + title + ", phones=" + phones + "]"; }}
persistence.xml
<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_2_0.xsd" version="2.0"> <persistence-unit name="MyPersistenceUnit" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> <property name="hibernate.hbm2ddl.auto" value="update" /> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> <property name="hibernate.connection.username" value="jcg" /> <property name="hibernate.connection.password" value="jcg" /> <property name="hibernate.connection.url" value="jdbc:mysql://localhost/companydb" /> </properties> </persistence-unit></persistence>
输出:
employees [Employee [id=1, name=Jack, surname=Thomson, title=QA Engineer, phones=null]]
用户点评