2015-09-18 73 views
1

我正在玩的框架2.3x,我实现了与玩框架休眠,但我在控制器类的会话工厂获得空值。其实这个sessionFactory没有得到hibernate-cfg.xml文件。 请CHEAK休眠实现与播放框架2.3x

我build.sbt是

libraryDependencies ++= Seq(
    javaJdbc, 
    javaEbean, 
    cache, 
    javaWs, 
    "mysql" % "mysql-connector-java" % "5.1.18", 
    javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"), 
    "org.hibernate" % "hibernate-entitymanager" % "4.3.9.Final", 
    "com.google.code.gson" % "gson" % "2.2" 
) 

我的conf /休眠-cfg.xml中是

<?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.dialect"> 
       org.hibernate.dialect.MySQLDialect 
      </property> 
      <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
      <property name="connection.url">jdbc:mysql://localhost/test</property> 
      <property name="connection.username">root</property> 
      <property name="connection.password"></property> 
      <property name="connection.pool_size">10</property> 
      <property name="current_session_context_class">thread</property> 
      <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 
      <property name="show_sql">true</property> 
      <property name="hbm2ddl.auto">validate</property> 


     </session-factory> 
    </hibernate-configuration> 
**My Model class is** 
@javax.persistence.Entity 
@Table(name = "customer") 
public class Customer extends Model { 
    public static Finder<Integer, Customer> find = new Finder<Integer, Customer>(
      Integer.class, Customer.class 
    ); 

    @Id 
    @Column(name = "cid") 
    int cid; 
    @Column(name = "name") 
    public String name; 

    public int getCid() { 
     return cid; 
    } 

    public void setCid(int cid) { 
     this.cid = cid; 
    } 

    public String getName() { 
     return name; 
    } 

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

    public static List<Customer> findAll() { 
     return find.all(); 
    } 
} 

回答

0

你应该把你的JPA配置在conf/META-INF/persistance.xml。这是JPA的标准位置,Hibernate只是JPA的一个实现。 Play在conf/application.conf中有几个附加配置。有一个很好的教程Integrating Play with JPA

另一点:你在你的控制器方法中使用@Transactional注释吗?如果没有,则必须手动明确告诉Play以JPA.withTransaction开始交易。