小编Mik*_*378的帖子

Play Framework 2.1 /表单映射与复杂对象

Scala的Play Framework文档显示了一个隐式地将表单映射到案例类的示例:

case class User(name: String, age: Int)

val userForm = Form(
  mapping(
    "name" -> text,
    "age" -> number
  )(User.apply)(User.unapply)
)
Run Code Online (Sandbox Code Playgroud)

我们注意到在这个独特的样本中只使用了原始值.

如果我们做这个改动怎么样:

case class Car(brandName: String)

case class User(name: String, car: Car)
Run Code Online (Sandbox Code Playgroud)

而且,让我们假设表单返回User的名称(String)和一个carId(String)

val userForm = Form(
  mapping(
    "name" -> text,
    "car" -> carRepository.findById(nonEmptyText)  // concept I wish
  )(User.apply)(User.unapply)
)
Run Code Online (Sandbox Code Playgroud)

有没有办法在这个希望的线路上实例化一辆汽车,carId例如表格提供的一些汽车并确保它carId不是空的String

forms scala playframework-2.1

3
推荐指数
2
解决办法
4606
查看次数

JBoss AS 7没有找到持久性提供程序

我刚刚从Tomcat迁移到JBoss AS 7.因此,我在JBoss中配置了Mysql数据源(添加了带有关联Jar的module.xml,将驱动程序块添加到standalone.xml并通过JBoss接口配置数据源).

部署时没有错误但是不可能获得entityManager(后台有Hibernate的JPA).

实际上,当执行此代码时:

Persistence.createEntityManagerFactory("RoomManagement");
Run Code Online (Sandbox Code Playgroud)

我得到了这个错误:

javax.persistence.PersistenceException:没有名为RoomManagement的EntityManager的持久性提供程序javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)

非常奇怪,因为我很好地验证了我的persistence.xml确实发生在WEB-INF/classes/META-INF目录下的War中.

我的persistence.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">

    <persistence-unit name="RoomManagement" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:jboss/datasources/MySqlDS</jta-data-source>
        <class>com.parisdescartes.roommanagement.domain.entities.Address</class>
        <class>com.parisdescartes.roommanagement.domain.entities.Building</class>
        <class>com.parisdescartes.roommanagement.domain.entities.Civility</class>
        <class>com.parisdescartes.roommanagement.domain.entities.EventType</class>
        <class>com.parisdescartes.roommanagement.domain.entities.Job</class>
        <class>com.parisdescartes.roommanagement.domain.entities.Reservation</class>
        <class>com.parisdescartes.roommanagement.domain.entities.Room</class>
        <class>com.parisdescartes.roommanagement.domain.entities.RoomType</class>
        <class>com.parisdescartes.roommanagement.domain.entities.Tool</class>
        <class>com.parisdescartes.roommanagement.domain.entities.User</class>
        <class>com.parisdescartes.roommanagement.domain.entities.UserDetail</class>
        <class>com.parisdescartes.roommanagement.domain.entities.Schedule</class>
        <properties>
            <property name="hibernate.connection.autocommit" value="true" />
            <property name="hibernate.archive.autodetection" value="class"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hbm2ddl.auto" value="update"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
        </properties>
    </persistence-unit>
</persistence> 
Run Code Online (Sandbox Code Playgroud)

我犯了错误或忘记指定某事吗?

java jboss hibernate jpa

2
推荐指数
1
解决办法
3648
查看次数

ArrayList(Collection c)VS HashSet(Collection c)

在检查ArrayList API时,我注意到一些看起来很奇怪的东西.

实际上,这里是ArrayList构造函数实现,其Collection作为参数传递:

public ArrayList(Collection<? extends E> c) {
        elementData = c.toArray();
        size = elementData.length;
        // c.toArray might (incorrectly) not return Object[] (see 6260652)
        if (elementData.getClass() != Object[].class)
            elementData = Arrays.copyOf(elementData, size, Object[].class);
}
Run Code Online (Sandbox Code Playgroud)

这里相当于HashSet类:

public HashSet(Collection<? extends E> c) {
        map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
        addAll(c);
}
Run Code Online (Sandbox Code Playgroud)

因此,我们可以注意到ArrayList使用了参数集合中提供的COPY(Arrays.copyOf)元素,而HashSet则使用了addAll()方法.

当然,addAll()方法不会复制元素,只是添加对HashSet集合的引用.

我发现这个subtil的区别对于忽略它的调用者来说是"危险的".

人们可以期待一个带有SAME引用的集合,另一个读取ArrayList API的人会期望从原始Collection中复制元素.

为什么Sun没有为那些Collections子类提供相同的概念?

java collections

2
推荐指数
1
解决办法
948
查看次数

了解函数文字类型

假设这段代码:

  def main(args: Array[String]) {
    val func = (x: String, y :String) => x + ", " + y
    println(myFunc(func))
  }

  def myFunc(f: (String, String) => String) = {
    f("Hey","how are you?")
  }
Run Code Online (Sandbox Code Playgroud)

此代码的第二行被编译器替换为:

val func = new Function2[String, String, String] {
             def apply(x: String, y: String): String = x + ", " + y
           } 
Run Code Online (Sandbox Code Playgroud)

我可以推断,func在这种情况下,该类型也对应于(String, String) => String)类型,如myFunc签名所示; 意思Function2[String, String, String]是与...相同的类型(String, String) => String.

为什么不同的符号?为什么Scala编译器还没有将函数文字转换为某种概念:new ((String, String) …

compiler-construction functional-programming scala

2
推荐指数
1
解决办法
120
查看次数

使用NPM安装lessc - UNABLE_TO_VERIFY_LEAF_SIGNATURE

我想安装NPM提供的lessc.(在OSX上)

首先,我安装了当前版本的NodeJ:0.10.15.
它包括NPM.

现在我启动着名的命令:

npm install -g lessc

我得到了这个错误:

npm install -g lessc
npm http GET https://registry.npmjs.org/lessc
npm http GET https://registry.npmjs.org/lessc
npm http GET https://registry.npmjs.org/lessc
npm ERR! Error: UNABLE_TO_VERIFY_LEAF_SIGNATURE
npm ERR!     at SecurePair.<anonymous> (tls.js:1350:32)
npm ERR!     at SecurePair.EventEmitter.emit (events.js:92:17)
npm ERR!     at SecurePair.maybeInitFinished (tls.js:963:10)
npm ERR!     at CleartextStream.read [as _read] (tls.js:463:15)
npm ERR!     at CleartextStream.Readable.read (_stream_readable.js:320:10)
npm ERR!     at EncryptedStream.write [as _write] (tls.js:366:25)
npm ERR!     at doWrite (_stream_writable.js:219:10)
npm ERR!     at writeOrBuffer (_stream_writable.js:209:5)
npm ERR!     at …
Run Code Online (Sandbox Code Playgroud)

less node.js npm

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

在String中提取和赋值的有效方法是什么?

假设String:Point(123 456).

什么是一个有效和干净的方式来提取和分配123456(as String)Tuple2一次?

我做了什么:

val str = "Point(123 456)"
val tab = str.stripPrefix("Point(").stripSuffix(")").split("\\s")
val tuple2 = (tab(0), tab(1))
println(tuple2)  // displays the (123,456)
Run Code Online (Sandbox Code Playgroud)

蛮丑的 ...

scala

2
推荐指数
1
解决办法
59
查看次数

为什么Cypher的查询速度更快?

我刚刚阅读了Neo4j官方文档的这一页.
它显示了一种Cypher方式来专门检索朋友的朋友:

MATCH (joe { name: 'Joe' })-[:knows*2..2]-(friend_of_friend)
WHERE NOT (joe)-[:knows]-(friend_of_friend)
RETURN friend_of_friend.name, COUNT(*)
ORDER BY COUNT(*) DESC , friend_of_friend.name
Run Code Online (Sandbox Code Playgroud)

为什么以下方式更快?:

MATCH path = shortestPath((joe { name: 'Joe' })-[:KNOWS*..2]-(friend_of_friend))
WHERE length(path) = 2
WITH nodes(path)[-1] AS secondDegreeFriends //retrieving the friend_of_friend nodes
RETURN secondDegreeFriends._name, COUNT(*)
ORDER BY COUNT(*) DESC , secondDegreeFriends.name
Run Code Online (Sandbox Code Playgroud)

(对于第二个查询,33ms vs 22ms,两者都在图中的182个成员的上下文中)

neo4j graph-databases cypher

2
推荐指数
1
解决办法
69
查看次数

Neo4j/Indexed属性VS创建不同的节点

我们假设这个用例:

"获取所有传递的事件2013/05/12 20:002013/05/14 21:00".

实现这种情况下,Neo4j的第一种方式是使索引的属性:
事件(startAt:...,ENDAT:...) (startAtendAt被索引)

这将导致扫描具有与实际查询相对应的属性的所有事件.

我刚读过的其他方式:

在此输入图像描述

问题是:在这种情况下,节点遍历在性能方面要好于处理日期的索引属性吗?

neo4j graph-databases cypher

1
推荐指数
2
解决办法
359
查看次数

合并这些列表的有效方法是什么?

让我们假设这四个字符串列表:

List("123::foo") 
List("456::bar") 
List("123::hello") 
List("456::scala")
Run Code Online (Sandbox Code Playgroud)

什么是最终的有效方式:

List("123","foo","hello")
List("456","bar","scala") 
Run Code Online (Sandbox Code Playgroud)

并期望为大量的初始列表工作.

collections functional-programming scala

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

Cypher /阻止shortestPath函数来检索不涉及至少一个遍历关系的节点

关于cyper请求的摘录:(假设element在整个请求中是已知的节点变量)

MATCH p = shortestPath(element-[:LINKS*..3]-(user))
RETURN length(p)
Run Code Online (Sandbox Code Playgroud)

假设一个element可能是a user,我怎么能阻止在结果中检索element代表用户本身?

如果我们可以这样做会很酷:

MATCH p = shortestPath(element-[:LINKS*1..3]-(user))
RETURN length(p)
Run Code Online (Sandbox Code Playgroud)

但它导致了这个错误:

shortestPath(...) does not support a minimal length
Run Code Online (Sandbox Code Playgroud)

实现这一伎俩最有效的方法是什么?

neo4j graph-databases cypher

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