小编zde*_*ine的帖子

EntityManager刷新

我有使用JPA的Web应用程序.这个实体管理器保留了大量的实体,突然间我从另一侧更新了数据库.我使用MySQL,我使用PhpMyAdmin并更改一些行.

如何告诉实体经理重新同步,例如忘记缓存中的所有entite?

我知道有refresh(Object)方法,但是有什么可能做什么refreshAll()或什么导致这个?

这肯定是昂贵的操作,但如果必须这样做.

java jpa entitymanager

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

正则表达式中的Levenshtein距离

是否有可能在正则表达式查询中包含levenshtein距离?

除了在排列之间建立联合.喜欢用Ld 1搜索"你好"

.ello | h.llo | he.lo | hel.o | hell.
Run Code Online (Sandbox Code Playgroud)

对于大量的Ld来说,这是非常愚蠢和无法使用的

regex levenshtein-distance

9
推荐指数
3
解决办法
3399
查看次数

Java FileOutputStream连续关闭需要很长时间

我面临一点奇怪的情况.

我正在从FileInputStream复制到FileOutputStream一个大小约为500MB的文件.它很顺利(需要大约500毫秒).当我第一次关闭这个FileOutputStream 时,大约需要1ms.

但是接下来,当我再次运行时,每次连续关闭大约需要1500-2000毫秒!删除此文件时,持续时间将减少到1毫秒.

java.io我缺少一些基本知识吗?

它似乎与操作系统有关.我在ArchLinux上运行(在Windows 7上运行的相同代码一直在20ms以下).请注意,它是否在OpenJDK或Oracle的JDK中运行并不重要.硬盘驱动器是一个带有ext4文件系统的固态驱动器.

这是我的测试代码:

public void copyMultipleTimes() throws IOException {
    copy();
    copy();
    copy();
    new File("/home/d1x/temp/500mb.out").delete();
    copy();
    copy();
    // Runtime.getRuntime().exec("sync") => same results
    // Thread.sleep(30000) => same results
    // combination of sync & sleep => same results
    copy();
}

private void copy() throws IOException {
    FileInputStream fis = new FileInputStream("/home/d1x/temp/500mb.in");
    FileOutputStream fos = new FileOutputStream("/home/d1x/temp/500mb.out");
    IOUtils.copy(fis, fos); // copyLarge => same results
    // copying takes always the same amount of time, only close "enlarges" …
Run Code Online (Sandbox Code Playgroud)

java java-io

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

Android-此流程中的外向交易必须为FLAG_ONEWAY

在Moto G6设备上运行Android应用程序时,我遇到两个问题(在其他设备或模拟器上没有此类问题)。在我的应用中,有一个简单的LoginActivity,成功登录后将启动MainActivity(在AsyncTask的onPostExecute中):

val intent = Intent(this@LoginActivity, MainActivity::class.java)
startActivity(intent)
Run Code Online (Sandbox Code Playgroud)

但是,在Moto G6上(在Sony Xperia上没有发生),出现错误,交易应该是单向的:

10-17 07:50:45.058 1878-2153/? W/Binder: Outgoing transactions from this process must be FLAG_ONEWAY
java.lang.Throwable
    at android.os.BinderProxy.transact(Binder.java:736)
    at android.app.assist.AssistStructure$ParcelTransferReader.fetchData(AssistStructure.java:407)
    at android.app.assist.AssistStructure$ParcelTransferReader.go(AssistStructure.java:343)
    at android.app.assist.AssistStructure.ensureData(AssistStructure.java:2110)
    at com.android.server.autofill.Session$1.send(Session.java:200)
    at com.android.server.am.ActivityManagerService.reportAssistContextExtras(ActivityManagerService.java:13475)
    at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2467)
    at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3082)
    at android.os.Binder.execTransact(Binder.java:674)
Run Code Online (Sandbox Code Playgroud)

任何建议或帮助表示赞赏,谢谢。

android motorola android-intent kotlin

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

具有依赖库的Maven EJB打包

我面临一个问题,如何使用简单的WAR和EJB3模块为JBoss7应用服务器正确打包我的企业(EAR)应用程序.问题是,EJB模块正在使用XML-RPC库(来自Apache),并且在部署EAR期间我仍然获得NoDefClassFound(来自此xmlrpc lib的类).

问题是,这maven- EJB -plugin并没有打包最终EJB JAR但maven-内的相关性 -plugin并在EAR目录的根目录打包.

部署EAR时,会在内部EJB模块上调用INSTALL,但它找不到xmlrpc lib类(它不是与EJB jar一起打包而是EAR,它在清单中没有任何条目).

EJB pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>cz.ctu.fee.voxport.app_logic</groupId>
    <artifactId>core</artifactId>
    <version>1.0</version>
    <packaging>ejb</packaging>

    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlrpc</groupId>
            <artifactId>xmlrpc-common</artifactId>
            <version>3.1.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlrpc</groupId>
            <artifactId>xmlrpc-client</artifactId>
            <version>3.1.3</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ejb-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <ejbVersion>3.1</ejbVersion>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

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

有没有办法如何使用maven干净利落地解决这个问题?

java java-ee maven ejb-3.0

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

PUT没有数据,是RESTful吗?

简单的问题:如果我不是通过HTTP POST/PUT方法在我的资源上发送数据(内容)怎么办?它仍然是RESTful吗?

显然,问题是我想在没有数据的情况下使用PUT.想象一下想要重置密码的用户(就像在这个较旧的主题中一样).

你怎么看呢?可以不用POST/PUT方法发送内容吗?就个人而言,我没有任何问题,但我只是好奇其他人会怎么说.

rest http

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

Kotlin 中子类型的 GSON 反序列化

我不确定这是限制、错误还是 GSON 使用不当。我需要有一个 Kotlin 对象的层次结构(具有各种子类型的父对象),我需要使用 GSON 反序列化它们。反序列化的对象具有正确的子类型,但其字段 enumField 实际上是 null

首先我认为这是因为该字段被传递给“超级”构造函数,但后来我发现“超级”适用于字符串,只是枚举被破坏了。

看这个例子:

import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.google.gson.typeadapters.RuntimeTypeAdapterFactory

open class Parent(val stringField: String,
                  val enumField: EnumField) {

    enum class EnumField {
        SUBTYPE1,
        SUBTYPE2,
        SUBTYPE3
    }
}


class Subtype1() : Parent("s1", EnumField.SUBTYPE1)
class Subtype2(stringField: String) : Parent(stringField, EnumField.SUBTYPE2)
class Subtype3(stringField: String, type: EnumField) : Parent(stringField, type)

val subtypeRAF = RuntimeTypeAdapterFactory.of(Parent::class.java, "enumField")
        .registerSubtype(Subtype1::class.java, Parent.EnumField.SUBTYPE1.name)
        .registerSubtype(Subtype2::class.java, Parent.EnumField.SUBTYPE2.name)
        .registerSubtype(Subtype3::class.java, Parent.EnumField.SUBTYPE3.name)

fun main() {
    val gson = GsonBuilder()
            .registerTypeAdapterFactory(subtypeRAF)
            .create()

    serializeAndDeserialize(gson, Subtype1()) // …
Run Code Online (Sandbox Code Playgroud)

gson deserialization kotlin

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

JPA MappedSuperclass 与 ManyToOne

我面临着一个典型的问题。想象一下对象之间典型的 1-N 关系。准确地说,用户(U)和房间(R):[U]*---1[R]。

问题来了,Room 应该是带有实现的抽象基类,例如 BlueRoom、RedRoom。如何正确设置用户实体内的关系?

public interface Room { ... }
@MappedSuperclass
public abstract class RoomSuperclass implements Room { ... }
@Entity
public class BlueRoom extends RoomSuperclass { ... }
@Entity
public class RedRoom extends RoomSuperclass { ... }


@Entity
public class User {

  @ManyToOne(targetEntity = ???) // I don't know if it will be BlueRoom or RedRoom
  private Room room; // ManyToOne cannot be applied on mapped superclass
}
Run Code Online (Sandbox Code Playgroud)

我知道这可能可以通过在 RoomSuperclass 上使用 @Entity 而不是 @MappedSuperclass 来解决,但我不确定这是否是一个好的解决方案以及是否有更好的解决方案。

entity jpa mappedsuperclass

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

RESTful子类型资源

一个最佳实践问题。如果要设计RESTful接口,将如何区分子类型。例如,您的应用程序具有动物(每个动物都由其animalId标识),它们具有狗和鸟的子类型,其中每个子类型都有其特定的子资源。例如,狗的尾巴长而鸟的翅膀长(无论如何)。您会选择哪种方法(或者您有更好的想法)?

1)
/animals/{animalId}/tail-length (400 when animal is bird)
/animals/{animalId}/wings-length (400 when animal is dog)

2)
/dogs/{animalId}/tail-length
/birds/{animalId}/wings-length

3)
/animals?type=dog/{animalId}/tail-length
/animals?type=bird/{animalId}/wings-length
Run Code Online (Sandbox Code Playgroud)

rest

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

MSSQL 模式和 Hibernate 5.1.0.Final(未找到表)

我试图了解如何配置我的 Hibernate 以与我的 MSSQL DB 及其模式正常工作。

问题是在表验证期间,它会记录(对于每个表):

org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl
- HHH000262: Table not found SHARED_CONFIGURATION
Run Code Online (Sandbox Code Playgroud)

我调试了 Hibernate 以找出导致此问题的原因,并发现它调用了以下内容:

EXECUTE [mydb]..sp_columns N'SHARED_CONFIGURATION',N'',N'mydb'
Run Code Online (Sandbox Code Playgroud)

请注意,第二个参数是架构名称,并且传递了空字符串。当我尝试对 DB 运行此查询时,它返回空结果集。但是当我将 'dbo' 作为第二个参数传递时,结果集不为空(意味着 Hibernate 应该调用它)。

好的,所以我好像需要定义模式。但是在我的实体上的@Table 注释中设置 hibernate.default_schema 或设置模式都引发了异常:

Schema-validation: missing table [SHARED_CONFIGURATION]
Run Code Online (Sandbox Code Playgroud)

所以现在我想知道真正的问题是什么。我还想在我的数据库中设置默认架构,但不允许(无法更改用户“sa”,因为它不存在或您没有权限。)即使在使用用户“sa”本身执行时也是如此:

ALTER USER sa WITH DEFAULT_SCHEMA = dbo;
Run Code Online (Sandbox Code Playgroud)

请注意,任何驱动程序(JTDS,官方 MS 驱动程序。能够与数据库一起正常运行)?

database sql-server orm hibernate jpa

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

Apache Camel聚合路由有异常

我想使用Apache Camel并行多播到3条路由并聚合(并等待)其中2条路由,而第3条则自行停止(第3条不应阻塞前2条).我还需要在"所有"情况下处理这两个,这意味着如果其中一个失败(例如在处理期间抛出异常),它也应该聚合.

根据我从Camel文档中的理解,只要您没有指定说stopOnException,该行为应该是"默认".但是,与异常的交换永远不会进入我的AggregationStrategy.有点奇怪的是,即使有completionSize(2),聚合后面的处理器也会被执行.

所以我的问题是:如果没有处理与AggregationStrategy中的异常交换,聚合后的路由如何继续?以及如何正确解决我的案子?请注意,执行.to("direct:sync")并非如此,因为此异常可能会从完全超出路由的多播聚合部分的路由中抛出.

下面是示例代码(ExceptionThrowingProcessor抛出MyException,PropertySetterProcessor并不重要):

CamelContext context = new DefaultCamelContext();
RouteBuilder builder = new RouteBuilder() {
    @Override
    public void configure() throws Exception {
    }
};

builder.onException(MyException.class)
        .process(new PropertySetterProcessor("a", "onException"))
        .handled(true);

builder.from("direct:input")
        .process(new PropertySetterProcessor("a", "before-multicast"))
        .multicast()
        .parallelProcessing()
        .shareUnitOfWork()
        .to("direct:part1", "direct:part2", "direct:part3")

builder.from("direct:part1")
        .process(new PropertySetterProcessor("a", "part1"))
        .to("direct:sync");

builder.from("direct:part2")
        .process(new PropertySetterProcessor("a", "part2"))
        .process(new ExceptionThrowingProcessor("oops")) // throws MyException
        .to("direct:sync");

builder.from("direct:part3")
        .process(new PropertySetterProcessor("a", "part3"));
// don't want this to be aggregated within direct:sync

builder.from("direct:sync")
        .aggregate(new TestAggregationStrategy())
        // strategy.aggregate is called only once (from part1) but …
Run Code Online (Sandbox Code Playgroud)

java apache-camel

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