为了让自己熟悉Play 2.0 Framework,我一直在关注Play 2.0简介教程.不幸的是,我无法让Ebean坚持不懈地工作.我Task.java看起来像这样:
package models;
import java.util.*;
import play.db.*;
import play.data.validation.Constraints.*;
import javax.persistence.*;
@Entity
public class Task {
@Id
public Long id;
@Required
public String label;
public static List<Task> all() {
return find.all();
}
public static void create(Task task) {
task.save();
}
public static void delete(Long id) {
find.ref(id).delete();
}
}
Run Code Online (Sandbox Code Playgroud)
但在运行一个应用,find并save不能得到解决.我想我忘了导入一个模块,但我无法弄清楚它是哪个...
我试图创建一个简单的控制器/模型(基于播放2.0的示例代码)并获得有关DB演变的消息:
Database 'default' needs evolution!
An SQL script will be run on your database - "Apply this script now"
1 # --- Rev:1,Ups - fbdc2fd
2 create table group (
3 id bigint not null,
4 name varchar(255),
5 description varchar(255),
6 due_date timestamp,
7 constraint pk_group primary key (id))
8 ;
9
10 create sequence group_seq;
Run Code Online (Sandbox Code Playgroud)
但是当点击按钮时,我收到以下错误消息:
Database 'default' is in inconsistent state!
An evolution has not been applied properly. Please check the problem and resolve it manually before …Run Code Online (Sandbox Code Playgroud) 我正在尝试在字符串字段上为数据库模型使用eBean @Encrypted批注.文档使它看起来很简单,但是我在浏览器中使用内置的H2内存数据库获得了一个非常模糊的运行时错误:
package models;
import java.util.*;
import javax.persistence.*;
import play.db.ebean.*;
import play.db.ebean.Model.Finder;
import play.data.format.*;
import play.data.validation.*;
import com.avaje.ebean.*;
import com.avaje.ebean.annotation.*;
@Entity
public class Test extends Model {
@Id
public Long id;
@Encrypted
public String identifier;
}
Run Code Online (Sandbox Code Playgroud)
产生与@Encrypted批注相关的以下运行时错误:
Unexpected exception
RuntimeException: Error reading annotations for models.Test
No source available, here is the exception stack trace:
->java.lang.RuntimeException: Error reading annotations for models.Test
com.avaje.ebeaninternal.server.deploy.parse.ReadAnnotations.readInitial(ReadAnnotations.java:26)
com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.createDeployBeanInfo(BeanDescriptorManager.java:1026)
com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.readEntityDeploymentInitial(BeanDescriptorManager.java:533)
com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.deploy(BeanDescriptorManager.java:250)
com.avaje.ebeaninternal.server.core.InternalConfiguration.<init>(InternalConfiguration.java:124)
com.avaje.ebeaninternal.server.core.DefaultServerFactory.createServer(DefaultServerFactory.java:210)
com.avaje.ebeaninternal.server.core.DefaultServerFactory.createServer(DefaultServerFactory.java:64)
com.avaje.ebean.EbeanServerFactory.create(EbeanServerFactory.java:59)
play.db.ebean.EbeanPlugin.onStart(EbeanPlugin.java:79)
play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:63)
play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:63)
scala.collection.immutable.List.foreach(List.scala:309)
play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:63)
play.api.Play$$anonfun$start$1.apply(Play.scala:63)
play.api.Play$$anonfun$start$1.apply(Play.scala:63)
play.utils.Threads$.withContextClassLoader(Threads.scala:18)
play.api.Play$.start(Play.scala:62)
play.core.ReloadableApplication$$anonfun$get$1$$anonfun$1.apply(ApplicationProvider.scala:133)
play.core.ReloadableApplication$$anonfun$get$1$$anonfun$1.apply(ApplicationProvider.scala:106)
scala.Option.map(Option.scala:145) …Run Code Online (Sandbox Code Playgroud) java playframework ebean playframework-2.0 playframework-2.1
当我尝试在我的play框架应用程序的application.conf中使用MongoDB驱动程序时
db.default.driver=com.mongodb
Run Code Online (Sandbox Code Playgroud)
我收到了Driver not found错误.我在Build.scala中为MongoDB驱动程序配置了依赖项.
我正在使用MongoDB mongo-java-driverv 2.11.1的官方Java驱动程序.我希望这个驱动程序与Ebean一起使用.
要使其db.default.driver正常工作,正确的类名是什么?
我使用PLAY Framework 2.2.1,我想构建一个查询来搜索数据库中我从输入表单中获得的术语.
这是我到目前为止所得到的,但它不起作用:
...
List<String> terms;
public static Model.Finder<Integer, XYZ> find = new Model.Finder<Integer, XYZ.class>(Integer.class, XYZ.class);
ExpressionList<XYZ> el = XYZ.find.where();
for(String term : terms){
el.add(Expr.ilike("name", term + "%"));
}
List<XYZ> results = XYZ.find.where().add(el.disjunction()).findList();
Run Code Online (Sandbox Code Playgroud)
我不知道如何使用OR向我的查询添加和连接多个表达式.
我想单元测试我的数据库操作,我发现了这段代码.但是,我收到了以下错误:
[CityGame] $ test
[info] Compiling 2 Java sources to /Users/pmichna/Documents/code/citygame/target/scala-2.10/test-classes...
[error] /Users/pmichna/Documents/code/citygame/test/models/BaseModelTest.java:31: error: constructor DdlGenerator in class DdlGenerator cannot be applied to given types;
[error] ddl = new DdlGenerator((SpiEbeanServer) server, new MySqlPlatform(), config);
[error] ^
[error] required: no arguments
[error] found: SpiEbeanServer,MySqlPlatform,ServerConfig
[error] reason: actual and formal argument lists differ in length
[error] 1 error
[error] (test:compile) javac returned nonzero exit code
[error] Total time: 2 s, completed 2013-12-17 00:21:23
Run Code Online (Sandbox Code Playgroud)
有没有DdlGenerator改变?
我想用scala和fremework Play 2.2来实例化Ebean项目的模型对象.我面临ID自动生成和类参数/抽象的问题:
@Entity
class Task(@Required val label:String) extends Model{
@Id
val id: Long
}
object Task {
var find: Model.Finder[Long, Task] = new Model.Finder[Long, Task](classOf[Long], classOf[Task])
def all(): List[Task] = find.all.asScala.toList
def create(label: String) {
val task = new Task(label)
task.save
}
def delete(id: Long) {
find.ref(id).delete
}
}
Run Code Online (Sandbox Code Playgroud)
错误:"类任务需要是抽象的,因为没有定义值id".有什么想法可以避免这个问题?
嘿伙计们,我有使用Play Framework的问题.我正在尝试显示大量数据(来自此数据库).当我使用"find.all()"时,Play Framework Server崩溃,因为它占用了大量内存.
我有一个名为的DB模型:
@Entity
public class dblp_pub_new extends Model {
[...]
public dblp_pub_new() {}
public static List<dblp_pub_new> all() {
return find.all();
}
public String getDoi() {
return doi;
}
public void setMdate() {
this.mdate = new Date();
}
public static Finder<String,dblp_pub_new> find = new Finder<String, dblp_pub_new>(String.class, dblp_pub_new.class);
}
Run Code Online (Sandbox Code Playgroud)
我的渲染函数是,它包含在Application.java中:
public static Result dois(){
return ok(views.html.index.render(dblp_pub_new.all(), DoiForm));
}
Run Code Online (Sandbox Code Playgroud)
我试图将all()查询限制为50(最好是每页).但我似乎无法弄明白.我想我需要一个List返回显示在网页上.但我无法让它发挥作用.如果你们中的一个(和女孩)可以帮助我解决这个问题,我会真的很放心.我用"fetch"和"setMaxRows()"尝试过它,但我只能得到我似乎无法解决的错误.如果有不清楚的地方,请问我,我会尽量提供尽可能多的信息.谢谢.
使用Ebean创建的Postgres表,我想用手写的语句查询这些表:
SELECT r.name,
r.value,
p.name as param1,
a.name as att1,
p2.name as param2,
a2.name as att2
FROM compatibility c
JOIN attribute a ON c.att1_id = a.id
JOIN attribute a2 ON c.att2_id = a2.id
JOIN PARAMETER p ON a.parameter_id = p.id
JOIN PARAMETER p2 ON a2.parameter_id = p2.id
JOIN rating r ON c.rating_id = r.id
WHERE p.problem_id = %d
OR p2.problem_id = %d
Run Code Online (Sandbox Code Playgroud)
每个连接表代表我的一个模型类.查询执行正常,但我不知道如何继续:
我如何使用Play 2.2执行查询.和Ebean?如何将此查询映射到可迭代对象?我是否需要创建一个包含查询中所有字段的Model类,还是可以使用某种HashMap?如何以安全的方式参数化查询?
我正在学习如何在Play Framework中使用Ebean ORM,但却遇到了错误.我有很多课程,但问题出在这两个课程中.
StockItem类:
import com.avaje.ebean.Model;
import com.google.inject.Inject;
import javax.persistence.*;
@Entity
public class StockItem extends Model{
@Id
private Long id;
/*
@ManyToOne
private Warehouse warehouse;
*/
@ManyToOne
private Product product;
private Long quantity;
public static Finder<Long,StockItem> find = new Finder<>(StockItem.class);
public StockItem(){
//left blank
}
public String toString() {
return String.format("%d %s",quantity,product);
}
///gettters and setters
}
Run Code Online (Sandbox Code Playgroud)
仓库类:
import com.avaje.ebean.Model;
import javax.persistence.Entity;
@Entity
public class Warehouse extends Model{
private String name;
/*
@OneToMany(mappedBy="warehouse")
private List<StockItem> stock; // = new ArrayList<>(); …Run Code Online (Sandbox Code Playgroud)