小编amo*_*fis的帖子

为字段自定义的<f:validateLength>标记添加错误消息

我有很多关于巫婆的领域我必须验证长度.这不是<f:validateLength>标签的问题.我还可以为此验证器添加自定义消息.

问题是应该为每个字段定制消息.例如,firstname字段应该有消息"名字太短"或"名字太长",surname应该有"姓氏太短"或"姓氏太久"等.如何在JSF2.0中实现这一点?

validation jsf jsf-2

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

无法删除作为@OneToOne关系目标的实体

我有@OneToOne关系的以下实体:

@Entity
public static class EntityChild extends BaseEntity {
    //Id from superclass
}

@Entity
public static class EntityParent extends BaseEntity {

    //Id from superclass

    @OneToOne(cascade = ALL)
    private EntityChild child;

    //child getter/setter
}
Run Code Online (Sandbox Code Playgroud)

现在以下测试没有通过:

EntityParent parent = new EntityParent();
em.persist(parent);
em.flush();

EntityChild child = new EntityChild();
parent.setChild(child);
em.persist(parent);
em.flush();

em.remove(parent.getChild());
em.flush();
Run Code Online (Sandbox Code Playgroud)

它使用flush()在最后一行抛出异常.例外是javax.persistence.EntityNotFoundException: deleted entity passed to persist: [my.package.EntityChild#<null>]

为什么我不能删除这个实体?

java hibernate jpa

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

EclipseLink、EntityManager 需要两个持久性单元

我有一个 jar 库 A(或 eclipse 中的项目),它有自己的持久性单元(META-INF/persistence.xml)和一些实体类,以及使用该库的另一个项目(B)。在项目 B 中还有持久化单元和实体类。

在项目 BI 中,需要使用项目 A 和 B 中的两个实体类。但是,如果我将“A”设置为持久性单元名称,则 EntityManager 无法创建命名查询(如果该查询位于项目 B 的实体中)。如果我将“B”设置为持久性,则 EntityManager 无法创建命名查询。单位名称,它无法从项目 A 的实体创建命名查询。错误消息是:

NamedQuery of name: MyEntityName.myQueryName not found.
Run Code Online (Sandbox Code Playgroud)

持久性单元可以以某种方式包含其他持久性单元吗?或者还有其他方法可以解决这个问题吗?

jpa entitymanager eclipselink

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

验证不适用于EntityManager.merge()

我对我的实体有很少的验证,比如@NotNull和某些一代,比如

@Id
@GeneratedValue(strategy = AUTO)
@Column(name = "ID")
private Long id;

@Column
@GeneratedValue(strategy = GenerationType.AUTO)
private Long referenceNumber;
Run Code Online (Sandbox Code Playgroud)

但是,在调用EntityManager.merge()此值时不会生成.带@NotNull注释的空字段无需任何抱怨即可传递.甚至id没有生成.

我应该以某种方式切换这一代吗?怎么样,在哪里?

java validation jpa java-ee bean-validation

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

从Hibernate中的java.sql.Blob获取流

我正在尝试使用hibernate @Entity和java.sql.Blob来存储一些二进制数据.存储不会抛出任何异常(但是,我不确定它是否真的存储了字节),但是读取确实存在.这是我的测试:

@Test
public void shouldStoreBlob() {
    InputStream readFile = getClass().getResourceAsStream("myfile");

    Blob blob = dao.createBlob(readFile, readFile.available());
    Ent ent = new Ent();
    ent.setBlob(blob);

    em.persist(ent);
    long id = ent.getId();

    Ent fromDb = em.find(Ent.class, id);

    //Exception is thrown from getBinaryStream()
    byte[] fromDbBytes = IOUtils.toByteArray(fromDb.getBlob().getBinaryStream());
}
Run Code Online (Sandbox Code Playgroud)

所以它引发了一个例外:

java.sql.SQLException: could not reset reader
    at org.hibernate.engine.jdbc.BlobProxy.getStream(BlobProxy.java:86)
    at org.hibernate.engine.jdbc.BlobProxy.invoke(BlobProxy.java:108)
    at $Proxy81.getBinaryStream(Unknown Source)
    ...
Run Code Online (Sandbox Code Playgroud)

为什么?它不应该在这里读取DB的字节吗?我能做些什么让它发挥作用?

database hibernate jpa blob

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

scala.xml.PrettyPrinter在没有文本的情况下格式化较短的节点

我使用scala.xml.PrettyPrinter在Scala中格式化我的XML.问题在于没有文本内容的节点.而不是这个:

<node></node>
Run Code Online (Sandbox Code Playgroud)

我更喜欢这个:

<node />
Run Code Online (Sandbox Code Playgroud)

我怎样才能让PrettyPrinter按照我的方式进行格式化?

xml formatting scala scala-xml

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

已添加目录时将文件添加到git

我知道这很奇怪,因为git不应该保留空目录.这就是我做的:

git add directory
git commit
Run Code Online (Sandbox Code Playgroud)

directory有文件,这也是我要添加,但只有其中的一些.但是,没有添加任何文件,我现在无法添加任何文件.

当我将存储库克隆到不同的位置时,我可以清楚地看到它directory是空的.

当我尝试将文件添加directory到git时,如下所示:

git add directory/file
Run Code Online (Sandbox Code Playgroud)

我收到一个错误 fatal: Path 'directory/file' is in submodule 'directory'

我该如何添加这些文件?

git

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

两个承诺完成时的消防行动

我希望在两项承诺成功的情况下完成一些行动.所以我创建了这样一段代码:

val promiseForPersistence = Promise[Unit]()
val promiseForReplication = Promise[Unit]()

promiseForPersistence.future.onComplete {
  case scala.util.Success(_) => {
    if (promiseForReplication.isCompleted) {
      println(s"Acking from persistence promise (replication one already completed)" )
    }
  }
  case _ =>
}

promiseForReplication.future.onComplete {
  case scala.util.Success(_) => {
    if (promiseForPersistence.isCompleted) {
      println(s"Acking from replication promise (persistence one already completed)" )
    }
  }
  case _ =>
}

promiseForPersistence.success()
promiseForReplication.success()
Run Code Online (Sandbox Code Playgroud)

问题是,两个日志消息都被打印出来.我希望动作只被触发一次.为什么它会被解雇两次,怎么才能让它开火一次?

scala promise

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

Gradle即使运行test.useTestNG()也不会运行TestNG测试

我的build.gradle样子是这样的:

apply plugin: 'scala'
apply plugin: 'java'

sourceCompatibility = 1.8
version = '1.0'

repositories {
    mavenCentral()
}

dependencies {
    compile "org.scala-lang:scala-library:2.11.4"

    compile 'org.reactivestreams:reactive-streams:1.0.0.RC1'
    compile 'org.reactivestreams:reactive-streams-tck:1.0.0.RC1'

    testCompile group: 'junit', name: 'junit', version: '4.11'
    testCompile group: 'org.testng', name: 'testng', version: '5.14.10'
}

test {
    useTestNG()
}
Run Code Online (Sandbox Code Playgroud)

我在Scala中有一些实现,在Java中有TestNG测试。测试类实际上不包含任何测试,但是它的父类包含任何测试。Gradle似乎认为班上没有考试。

Skipping task ':testClasses' as it has no actions.
:testClasses UP-TO-DATE
:testClasses (Thread[main,5,main]) completed. Took 0.001 secs.
:test (Thread[main,5,main]) started.
:test
Skipping task ':test' as it is up-to-date (took 0.048 secs).
:test UP-TO-DATE
Run Code Online (Sandbox Code Playgroud)

测试类在 …

testng gradle

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

类似于 Mockito 给 Spock 的答案?

在 Mockito 中,有一个很好的方法可以通过与模拟的交互来获得编程答案。例如,我们可以对模拟进行编程以返回传递给其方法调用的参数:

when(mockDao.persist(any(Entity.class)).thenAnswer(new Answer<Entity>() {

    public Entity answer(InvocationOnMock invocationOnMock) throws Throwable {
        Entity entity = (Entity) invocationOnMock.getArguments()[0];

        return entity;
    }
});
Run Code Online (Sandbox Code Playgroud)

有没有办法在 Spock 中做同样的事情?

unit-testing mocking mockito spock

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

为什么Scala编译器可以提供隐式的out of object,但不能提供inside?

标题可能很模糊,但这是代码: https: //github.com/amorfis/why-no-implicit

所以有一个工具可以转化Map[String, Any]为简单的案例类。测试通过了,这段代码说明了它的全部内容:

        case class TargetData(
          groupId: String,
          validForAnalysis: Boolean,
          applicationId: Int
        )

        val map = Map(
          "groupId" -> "123456712345",
          "applicationId" -> 31,
          "validForAnalysis" -> true
        )

        val transformed: TargetData = MapDecoder.to[TargetData](map).transform
Run Code Online (Sandbox Code Playgroud)

这段代码有效。当提供简单的情况时,它很好地创建了案例类实例map

但是,该transform方法必须在“外部”调用 - 就像示例中一样。当我尝试将其移至该MapDecoder.to方法时 - 编译器抱怨缺少隐式。

所以我将代码更改MapDecoder.to为:

def to[A](map: Map[String, Any]) = new MapDecoderH[A](map)
Run Code Online (Sandbox Code Playgroud)

对此:

def to[A](map: Map[String, Any]) = new MapDecoderH[A](map).transform
Run Code Online (Sandbox Code Playgroud)

它停止工作了。这是为什么?为什么在一种情况下提供了隐含的内容,而在另一种情况下则没有提供?所有的变化是我想transform在其他地方调用该方法以MapDecoder.to返回案例类而不是某个转换器。

更新:

to[A]如果我想在要转换的对象内实现方法怎么办?让我们称之为DataFrame,我希望这段代码能够工作:

val df: DataFrame = ... …
Run Code Online (Sandbox Code Playgroud)

scala implicit shapeless

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

即使使用@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)也不会自动创建事务

我的Java EE 6应用程序中有这样的托管bean:

@Named
@RequestScoped
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public class RegistrationBean implements Serializable {

    @PersistenceContext
    EntityManager em;

    public String doRegistration() {
        MyEntity entity = new MyEntity();
        em.persist(entity);
        return "view";
    }
}
Run Code Online (Sandbox Code Playgroud)

据我了解@TransactionAttribute,应自动创建新事务。但显然不是,因为我遇到了一个例外:javax.persistence.TransactionRequiredException: EntityManager must be access within a transaction

我的持久性单元具有transaction-type="JTA"属性。我正在使用JBoss 6 cr1。

jta java-ee java-ee-6

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