gpt4 book ai didi

java - 使用 Play 框架 2.3x 实现 Hibernate

转载 作者:太空宇宙 更新时间:2023-11-04 13:26:04 25 4
gpt4 key购买 nike

我正在使用 play 框架 2.3x,我使用 play 框架实现了 hibernate,但是我在 Controller 类的 session 工厂中得到了 null 值。实际上这个 sessionFactory 没有获取 hibernate-cfg.xml 文件。请检查

我的 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/Hibernate-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();
}
}

最佳答案

您应该将 JPA 配置放入 conf/META-INF/persistance.xml 中。这是 JPA 的标准位置,Hibernate 只是 JPA 的一个实现。 Play 在 conf/application.conf 中有一些额外的配置。 Integrating Play with JPA 有一个很好的教程.

另一点:您在 Controller 方法中使用@Transactional注释吗?如果没有,您必须明确告诉 Play 手动使用 JPA.withTransaction 启动事务。

关于java - 使用 Play 框架 2.3x 实现 Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32646625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com