我将Play项目从版本2.3.4迁移到2.4.2.这些项目使用JPA(Hibernate)和Evolutions.我有一个最初的Evolutions SQL脚本,它用一些示例数据填充数据库.此脚本现在不再起作用,因为Evolutions脚本现在在Hibernate生成表之前执行,这显然会导致错误.这是一个理想的行为吗?有没有办法改变执行顺序?
hibernate jpa playframework playframework-evolutions playframework-2.4
我有一些问题需要了解如何在Play 2.4中应用依赖注入的新功能.我熟悉Guice,并在Play文档中错过了解实际绑定发生的方式和时间.我阅读了官方文档[1],并尝试使用最新的Play Mailer [2]作为示例.Play Mailer示例使用任意类并使用注释MailerClient属性@inject.当我尝试使用此类的对象属性时null,至少在调试时.那么,我必须在何时何地进行实际注射?我对@singleton注释有同样的问题.它只是解释了如何注释它,而不是如何获取对象.我是否必须直接使用Guice,或者它是如何集成的?
[1] https://www.playframework.com/documentation/2.4.x/JavaDependencyInjection
java dependency-injection guice playframework playframework-2.4
我正在使用Play框架,我有一个常见的用例,用控制器动作中的表单更新模型.但是我有一些问题需要理解它背后的概念,因为如果你有一个包含模型所有属性的表单,那么这个问题就可以了.如果您只有一个部分表单,例如只编辑用户模型的密码,则此方法会破坏模型,因为它会将模型的其他属性设置为null.这个问题有"官方"解决方案吗?任何方式Play只更新现有属性?
public static Result update(Long id) {
Model model = Model.findById(id);
Form<Model> filledForm = modelForm.bindFromRequest();
if (filledForm.hasErrors()) {
return badRequest(edit.render(filledForm));
} else {
model.update();
flash("message", "Created new Model!");
return ok(index.render());
}
}
Run Code Online (Sandbox Code Playgroud)
可能该解决方案在某种程度上可以使用其他参数调用bindFormRequest()方法,如字符串或字符串映射?但我无法找到目的.对此的一些见解也会很棒.非常感谢!
我正在使用Ebean和Play 2 Framework,并获得了两个模型:用户模型和书籍模型.用户模型与OneToMany关系中的书籍模型相关联.因此,每个用户都可以拥有许多书籍或根本没有书籍.书籍模型本身也有属性.现在,我想在用户模型中创建一个查询,该查询仅返回具有某些属性的书籍的用户.例如:一个属性可能是条件,如new或used.现在给我所有拥有新条件书籍的用户.是否可以使用Ebean方法创建这样的查询?或者我必须使用原始SQL?
我找到了使用Django Rest Framework测试Django开发的API端点的理想方法.我正在使用集成的APITestCase并执行如下请求:
response = self.client.get('/resources')
Run Code Online (Sandbox Code Playgroud)
官方文档(http://www.django-rest-framework.org/api-guide/testing)声明最好使用response.datainstaed response.content.我的模型包括一个DateTimeField字段,response.data看起来像这样:
{'id': 1, 'issued': datetime.datetime(2014, 5, 3, 0, 0, tzinfo=<UTC>)}
Run Code Online (Sandbox Code Playgroud)
浏览器中的真实响应如下所示:
{"id": 1, "issued": "2014-05-03T00:00:00Z"}
Run Code Online (Sandbox Code Playgroud)
所以我不确定如何断言这两者是平等的!?
我有以下示例 Turtle 文档:
@prefix dct: <http://purl.org/dc/terms/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix example: <http://example.com/vocabulary/> .
@prefix dcat: <http://www.w3.org/ns/dcat#> .
<http://example.com/datasets/1>
a dcat:Distribution ;
example:props [ example:prop1 "hello" ;
example:prop2 "1"
] ;
dct:description "test data" .
Run Code Online (Sandbox Code Playgroud)
我使用 Apache Jena(带有 JSONLD_COMPACT_PRETTY 的 RDFDataMgr)将它转换为 JSON-LD 到 JSON-LD:
{
"@context": {
"dct": "http://purl.org/dc/terms/",
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"dcat": "http://www.w3.org/ns/dcat#",
"example": "http://example.com/vocabulary/"
},
"@graph": [
{
"@id": "_:b0",
"example:prop1": "hello",
"example:prop2": "1"
},
{
"@id": "http://example.com/datasets/1",
"@type": "dcat:Distribution",
"example:props": {
"@id": "_:b0"
},
"dct:description": "test data" …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Apache Jena 递归解析 RDF 文档。它由这样的数据集组成:
<dcat:dataset>
<dcat:Dataset rdf:about="http://url/" >
<dct:description xml:lang="ca">Description</dct:description>
<dct:license rdf:resource="http://creativecommons.org/licenses/by/3.0/"/>
<dcat:keyword xml:lang="ca">Keyword1</dcat:keyword>
<dcat:distribution>
<dcat:Download>
<dcat:accessURL>http:/url/</dcat:accessURL>
<dct:format>
<dct:IMT>
<rdf:value>application/pdf</rdf:value>
<rdfs:label>pdf</rdfs:label>
</dct:IMT>
</dct:format>
<dct:modified rdf:datatype="http://www.w3.or/2001/XMLSchema#date">2012-11-09T16:23:22</dct:modified>
</dcat:Download>
</dcat:distribution>
<dct:publisher>
<foaf:Organization>
<dct:title xml:lang="en">Company</dct:title>
<foaf:homepage rdf:resource="http://url/"/>
</foaf:Organization>
</dct:publisher>
</dcat:Dataset>
</dcat:dataset>
Run Code Online (Sandbox Code Playgroud)
到目前为止,我得到了每个语句,它直接位于 dcat:Dataset (使用 Jena 迭代 RDF 文件中的特定资源),但我想找到每个级别的每个三元组。我的输出应该是这样的:
description: Description
license: http://creativecommons.org/licenses/by/3.0/
keyword: Keyword1
distribution -> Download -> accessurl: http:/url/
distribution -> Download -> format -> IMT -> value: application/pdf
distribution -> Download -> format -> IMT -> label: pdf …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Play 2.2项目来使用Hibernate JPA和PostgreSQL数据库.我之前使用Play 2.1.1,它完美地工作.我现在收到以下错误:
play.api.UnexpectedException: Unexpected exception[NoClassDefFoundError: org/w3c/dom/ElementTraversal]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:152) ~[play_2.10.jar:2.2.0]
Run Code Online (Sandbox Code Playgroud)
我不知道这是从哪里来的.我的build.sbt看起来像这样:
libraryDependencies ++= Seq(
javaJdbc,
cache,
javaJpa,
"org.apache.directory.api" % "apache-ldap-api" % "1.0.0-M14",
"postgresql" % "postgresql" % "9.1-901-1.jdbc4",
"org.hibernate" % "hibernate-core" % "4.2.3.Final",
"org.hibernate" % "hibernate-entitymanager" % "4.2.3.Final"
)
Run Code Online (Sandbox Code Playgroud)
我的persistence.xml像这样:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="defaultPersistenceUnit"
transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>DefaultDS</non-jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)
我还没有编写任何代码,我只是配置它.
我正在使用Apache Jena来读取RDF文件,如下所示:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dcat="http://www.w3.org/ns/dcat#"
xmlns:skos="http://www.w3.org/2004/02/skos/core#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:dct="http://purl.org/dc/terms/"
xmlns:dctypes="http://purl.org/dc/dcmitype/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<dcat:Catalog rdf:about="http://uri/">
<dcat:dataset>
<dcat:Dataset rdf:about="http://url/bop2262008322pdf/">
<dct:publisher>
<foaf:Organization>
<foaf:homepage rdf:resource="http://url"/>
<dct:title xml:lang="ca">Neme</dct:title>
</foaf:Organization>
</dct:publisher>
<dcat:distribution>
<dcat:Download>
<dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date"
>2012-11-09T16:23:22</dct:modified>
<dct:format>
<dct:IMT>
<rdfs:label>pdf</rdfs:label>
<rdf:value>application/pdf</rdf:value>
</dct:IMT>
</dct:format>
<dcat:accessURL>http://url/</dcat:accessURL>
</dcat:Download>
</dcat:distribution>
<dcat:keyword xml:lang="ca">Keyword 2</dcat:keyword>
<dcat:keyword xml:lang="ca">Keyword</dcat:keyword>
<dct:creator>Creator</dct:creator>
<dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date"
>2013-04-16T12:27:14</dct:modified>
<dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date"
>2011-03-02T10:28:58</dct:issued>
</dcat:Dataset>
</dcat:dataset>
<dct:license rdf:resource="http://creativecommons.org/licenses/by/3.0/"/>
<dct:title xml:lang="es">Example</dct:title>
<dct:title xml:lang="ca">Example</dct:title>
</dcat:Catalog>
</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)
我基本上想要获得每个dcat:dataset资源和相应的语句.但我无法弄清楚如何从特定的命名空间和本地名称(在这种情况下dcat:dataset)迭代所有资源.我想通过包含属性可以找到资源.但是dcatJena似乎不支持名称空间.我在词汇表中找不到它.