Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的Play framework模型会作为空白记录保存到数据库中?_Java_Postgresql_Playframework - Fatal编程技术网

Java 为什么我的Play framework模型会作为空白记录保存到数据库中?

Java 为什么我的Play framework模型会作为空白记录保存到数据库中?,java,postgresql,playframework,Java,Postgresql,Playframework,我对Java相当陌生,正在使用Play框架进行基于web的项目。这是一次很好的学习经历,我能够找到大多数问题的解决方案,但我一直坚持将模型保存到数据库中 我使用的是框架版本2.3.4,带有本地运行的postgresql数据库。连接很好,但是当我在我的对象(报纸)上使用.save()方法时,会保存一条空白记录,其中只有ID字段有任何数据。表单中的值似乎被请求绑定得很好。为什么这不能被拯救 我一直在寻找答案,但似乎没有人遇到过这个问题 我注意到序列生成的ID并不总是使用下一个数字(跳过20左右),即

我对Java相当陌生,正在使用Play框架进行基于web的项目。这是一次很好的学习经历,我能够找到大多数问题的解决方案,但我一直坚持将模型保存到数据库中

我使用的是框架版本2.3.4,带有本地运行的postgresql数据库。连接很好,但是当我在我的对象(报纸)上使用.save()方法时,会保存一条空白记录,其中只有ID字段有任何数据。表单中的值似乎被请求绑定得很好。为什么这不能被拯救

我一直在寻找答案,但似乎没有人遇到过这个问题

我注意到序列生成的ID并不总是使用下一个数字(跳过20左右),即使我在本地运行并且是唯一的用户??这可能是某人的线索

模型如下:

package models;

import java.util.*;
import javax.persistence.*;

import play.mvc.*;

import play.db.ebean.Model;
import play.data.validation.*;

/**
 * Newspaper entity managed by Ebean
 */
@Entity
public class Newspaper extends Model {

private static final long serialVersionUID = -4004723260163933009L;

@Id
@GeneratedValue(generator="newspaper_seq")
@SequenceGenerator(name="newspaper_seq", allocationSize=1)
public Long id;

public String name;

public Long rate;

/**
 * Generic query helper for entity Newspaper with id Long
 */
public static Model.Finder<Long,Newspaper> find = new Model.Finder<Long,Newspaper>(Long.class, Newspaper.class);

public static Map<String,String> options() {
    LinkedHashMap<String,String> options = new LinkedHashMap<String,String>();
    for(Newspaper c: Newspaper.find.orderBy("name").findList()) {
        options.put(c.id.toString(), c.name);
    }
    return options;
}
谢谢你抽出时间

---更新--- 我启动了sql调试,并在终端中看到此错误:

[debug] c.j.b.PreparedStatementHandle - insert into newspaper (id, name, rate) values (101,'[SQL NULL of type 12]','[SQL NULL of type -5]')
出于某种原因,值为NULL(不同类型?),但当我输出表单的
.toString
值时,它似乎显示了正确的数据:

Form(of=class models.Newspaper, data={name=Toledo Blade, rate=10}, value=Some(models.Newspaper@2df64761), errors={})

有什么原因不能将数据传递给报纸模型吗?

好的-所以我在上找到了答案。我想我没有使用正确的搜索词:(
无论如何,我必须从终端的项目目录中键入
activator clean
。之后,它工作正常。希望这可以让其他人少受几个小时的挫折!

因此,在调用
save
之前,如果您检查
纸张的字段是否已填充,请尝试启用SQL日志记录(将
db.default.logStatements=true
logger.com.jolbox=DEBUG
添加到application.conf),以便您可以看到执行的SQL sttm
[debug] c.j.b.PreparedStatementHandle - insert into newspaper (id, name, rate) values (101,'[SQL NULL of type 12]','[SQL NULL of type -5]')
Form(of=class models.Newspaper, data={name=Toledo Blade, rate=10}, value=Some(models.Newspaper@2df64761), errors={})