标签: ebean

在Play framework 2.0中使用MySQL数据库所需的步骤

我是Play框架的新手.我正在尝试将MySQL数据库配置为与Play Ebeans一起使用的数据源.

请问您能解释一下使用Play 2.0框架配置MySQL所需的步骤(例如,下载驱动程序,添加依赖项等).

java playframework ebean playframework-2.0

91
推荐指数
6
解决办法
8万
查看次数

Ebean或锡耶纳有多成熟?

在上一次我听到很多关于hibernate的抱怨.事实上,我对休眠也有一些痛苦的经历.所以我读到了Ebean锡耶纳.

两者都有有趣的方法.不幸的是,数据库访问层很容易编写,但是如果你的项目增长并且你必须处理好的数据库表,你知道它们是否好.所以评估这样一个工具真的很难.Hibernate是众所周知的,你可以肯定你可以用它来解决你的问题.有时你需要学习很多,但你可以解决它.

Ebean怎么样?有没有真实的应用程序?支持哪些数据库?它可靠吗?

在搜索了一下后,我发现有更多的ORM框架,那么至少有一个可靠的框架吗?

java orm persistence siena ebean

25
推荐指数
2
解决办法
6509
查看次数

Play Framework 2.0和Ebean SQL日志记录

我想检查一下Ebean生成的SQL语句,以找出为什么在我的Play 2.0应用程序中发生某些异常(与SQL语法相关).有没有办法在Play Framework 2.0中记录Ebean生成的SQL语句?

在Play 1.x中,有一个jpa.debugSQL配置选项,如果设置为true,则会执行此操作.Play 2.0是否存在类似的Ebean设置?关于Play 2.0的Ebean文档页面仍然有点稀缺.


到目前为止我尝试了什么:

我在我的控制器和Global对象的onStart/ onRequest方法中添加了这些方法调用,但它没有任何效果:

Ebean.getServer(null).getAdminLogging().setLogLevel(LogLevel.SQL);
Ebean.getServer(null).getAdminLogging().setDebugGeneratedSql(Play.isDev());
Run Code Online (Sandbox Code Playgroud)

我已经修改了日志级别application.conf,但它也没有帮助(即使是日志级别TRACE).

logging ebean playframework-2.0

24
推荐指数
1
解决办法
1万
查看次数

Ebean在Play Framework 2中查找错误的序列名称

我有一个id:

@Column(name = "device")
@GeneratedValue(strategy = GenerationType.AUTO, generator = "device_gen")
@SequenceGenerator(name = "device_gen", sequenceName = "device_id")
@Id
public Integer id;
Run Code Online (Sandbox Code Playgroud)

SequenceGenerator将sequenceName定义为device_id但尝试保存实体我得到错误:关系"public.device_seq"不存在.

为什么要寻找device_seq而不是device_id

我正在使用PostgreSQL

java postgresql orm ebean playframework-2.0

18
推荐指数
1
解决办法
2064
查看次数

使用memcached使Java Play框架缓存Ebean实体

我正在运行Java Play框架版本v2.6.1并使用Ebean进行持久化.我的目的是使用play2-memcached插件获取bean缓存.

到目前为止我做了什么?

  • 安装memcached在localhost上并启用详细日志记录.
  • ehcachecacheApiin libraryDependenciesin 替换了依赖build.sbt(我假设,应该完全删除Ehcache).
  • 加入"com.github.mumoshu" %% "play2-memcached-play26" % "0.9.0",libraryDependenciesbuild.sbt
  • 加入"Spy Repository" at "http://files.couchbase.com/maven2",resolversbuild.sbt
  • 将以下条目添加到应用程序conf:

play.modules.disabled += "play.api.cache.ehcache.EhCacheModule" play.modules.enabled+="com.github.mumoshu.play2.memcached.MemcachedModule" play.cache.defaultCache=default play.cache.bindCaches=["db-cache", "user-cache", "session-cache"] memcached.host="127.0.0.1:11211"

  • 拿了我的实体并使其实现Serializable,还添加了@com.avaje.ebean.annotation.Cache注释.
  • 启用S​​QL日志记录

什么有用?

  • Entity.find.byId(id)结果SQL 加载实体SELECT.使用不同的请求结果再次加载它没有SQL语句.
  • 打开浏览器到localhost:11211显示syslog中的错误 - 这是为了确保memcached正在运行,我可以看到请求出现
  • 进行内存转储我可以看到com.github.mumoshu加载了与缓存相关的类.

什么不起作用?

  • 我希望缓存的对象被发送到memcached(在读取和/或更新时).这没有发生 - 没有与此相关的memcached日志.如果我运行,则没有任何与端口11211的连接netstat -na | …

java memcached playframework ebean playframework-2.6

18
推荐指数
1
解决办法
481
查看次数

Ebean - 动态查询 - 准备语句的不匹配参数计数错误

我希望拥有比我更多Ebean专业知识的人可以帮助我解决我现在正在排除故障的不稳定问题.

环境:

  • Java 1.7.0_17
  • MySQL 5.5
  • Play Framework 2.1.1(但是我已经升级到Play 2.2.1并且这个问题仍然存在)

我的主要问题是当我重新启动Play时,我正在交替使用SQLExceptions,所有这些都与Ebean正在创建的预准备语句中的参数太多或太少有关.数据集A在数据集B失败的情况下工作一半,但在重新启动Play时,数据集B在数据集A失败时工作.

我正在根据我写入传递给函数的一组Filter对象动态构建一个Ebean Query对象.Ebean查询正在查找满足每个Filter的给定要求的所有对象.

该功能类似于:

private List<Contact> contacts getContacts(Set<Filter> filters) {
    Query<Contact> query = Contact.find;
    for (Filter filter : filters) {
        filter.apply(query);
    }
    List<Contact> contacts = query.findList();
}
Run Code Online (Sandbox Code Playgroud)

过滤器的示例:

public void apply(Query<Contact> query) {
    query.where().in("tags", getTags());
}
Run Code Online (Sandbox Code Playgroud)

首先,Ebean支持这种类型的查询构建吗?我相信这是因为大多数时候这是有效的,然而,我遇到了使用某些数据运行"getContacts"函数数百次的问题,但有时只是......

所以坚持我,因为这个问题非常令人困惑.我还将介绍数据实际上的大部分细节,但如果您需要/需要更多信息,请询问.

数据集A的查询和异常:

select distinct t0.contact_id c0, t0.contact_uuid c1, t0.bounce c2 
from contact t0
join email_record u1 on u1.contact_id = t0.contact_id 
join contact_tag u2z_ on u2z_.contact_id = t0.contact_id 
join tag u2 on u2.tag_id = …
Run Code Online (Sandbox Code Playgroud)

java mysql ebean playframework-2.0

17
推荐指数
1
解决办法
1917
查看次数

使用Play Framework 2.1.x的多个数据库

我有2个需要连接的数据库.我可以在application.conf文件中轻松连接到它们,如下所示:

db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost/db1"
db.default.user=postgres
db.default.password="password"

db.secondary.driver=org.postgresql.Driver
db.secondary.url="jdbc:postgresql://localhost/db2"
db.secondary.user=postgres
db.secondary.password="password"

ebean.default="models.db1.*"
ebean.secondary="models.db2.*"
Run Code Online (Sandbox Code Playgroud)

我在这些包中有我的模型类,并且DDL正确生成表.

问题在于实际使用这些实体.任何不在"默认"包中的内容都会抛出此错误(使用辅助数据库中的Users表作为示例)

如果我尝试查询表的所有行:

List<Users> users = Users.find.all();
Run Code Online (Sandbox Code Playgroud)

它抛出此错误:

[PersistenceException: models.db2.Users is NOT an Entity Bean registered with this server?]
Run Code Online (Sandbox Code Playgroud)

即使我100%确定后端有Users表,它是DDL工作的注册表,并使该表正常,我正在导入正确的类.

我是否需要某种方式来查询不在默认包中的模型类?

编辑:我意识到堆栈跟踪显示它正在尝试使用DefaultServer.如何让它使用辅助服务器?

    at com.avaje.ebeaninternal.server.core.DefaultServer.createQuery(DefaultServer.java:989) ~[avaje-ebeanorm-server.jar:na]
    at com.avaje.ebeaninternal.server.core.DefaultServer.createQuery(DefaultServer.java:946) ~[avaje-ebeanorm-server.jar:na]
    at com.avaje.ebeaninternal.server.core.DefaultServer.find(DefaultServer.java:982) ~[avaje-ebeanorm-server.jar:na]
    at play.db.ebean.Model$Finder.all(Model.java:254) ~[play-java-ebean_2.10.jar:2.1.3]
Run Code Online (Sandbox Code Playgroud)

java database playframework ebean playframework-2.1

16
推荐指数
2
解决办法
6679
查看次数

播放2.4 - 在日志中显示Ebeans SQL语句

如何在日志中显示SQL语句?我正在使用EBeans,但由于某些原因它无法插入,但我看不出有什么问题.

我尝试将配置编辑为:

db.default.logStatements=true
Run Code Online (Sandbox Code Playgroud)

并将其添加到logback.xml

<logger name="com.jolbox" level="DEBUG" />
Run Code Online (Sandbox Code Playgroud)

按照我在网上找到的一些答案,但它似乎不适用于2.4 ......

sql logging playframework ebean playframework-2.4

15
推荐指数
3
解决办法
5747
查看次数

使用带有Ebean的ManyToOne映射的EmbeddedId时重复列

我有一个名为"EventCheckin"的模型,它具有到"事件"和"用户"的ManyToOne映射."EventCheckin"表的PrimaryKey是用户的id和事件的id.我试图在我的EventCheckin模型中使用"EmbeddedId"来表示这一点,但是当我尝试保存EventCheckin时,它会尝试将user_id和event_id值放入表中两次,这显然会失败:

Caused by: org.h2.jdbc.JdbcSQLException: Duplicate column name "USER_ID"; SQL statement:
insert into eventCheckin (event_id, user_id, latitude, longitude, user_id, event
_id) values (?,?,?,?,?,?) [42121-158]
Run Code Online (Sandbox Code Playgroud)

EventCheckin课程:

@Entity
@Table(name="eventCheckin")
public class EventCheckin extends Model
{
    @EmbeddedId public CheckinId id;

    @MapsId("userId")
    @JoinColumn(name="user_id")
    @ManyToOne public User user;

    @MapsId("eventId")
    @JoinColumn(name="event_id")
    @ManyToOne public Event event;

    .....
}
Run Code Online (Sandbox Code Playgroud)

CheckinId EmbeddedId类::

@Embeddable 
public class CheckinId implements Serializable
{
    public Long eventId;  
    public String userId;
    .....
}
Run Code Online (Sandbox Code Playgroud)

我的EventCheckin数据库表定义如下:

create table eventCheckin (
    user_id                   varchar(255) not null,
    event_id                  bigint not null, …
Run Code Online (Sandbox Code Playgroud)

jpa composite-key playframework ebean playframework-2.0

14
推荐指数
1
解决办法
5771
查看次数

JPA和EBean Play Framework之间的区别

我对Play框架比较陌生,我试过跟着这本食谱,但它似乎已经过时了.无论如何我只是想知道我提到的那些之间是否存在很大差异.

一些教程使用eBean而其他教程使用jpa.我真的很困惑.

java jpa playframework ebean

14
推荐指数
3
解决办法
1万
查看次数