我有使用JPA的Web应用程序.这个实体管理器保留了大量的实体,突然间我从另一侧更新了数据库.我使用MySQL,我使用PhpMyAdmin并更改一些行.
如何告诉实体经理重新同步,例如忘记缓存中的所有entite?
我知道有refresh(Object)方法,但是有什么可能做什么refreshAll()或什么导致这个?
这肯定是昂贵的操作,但如果必须这样做.
是否有可能在正则表达式查询中包含levenshtein距离?
除了在排列之间建立联合.喜欢用Ld 1搜索"你好"
.ello | h.llo | he.lo | hel.o | hell.
Run Code Online (Sandbox Code Playgroud)
对于大量的Ld来说,这是非常愚蠢和无法使用的
我面临一点奇怪的情况.
我正在从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) 在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)
任何建议或帮助表示赞赏,谢谢。
我面临一个问题,如何使用简单的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干净利落地解决这个问题?
简单的问题:如果我不是通过HTTP POST/PUT方法在我的资源上发送数据(内容)怎么办?它仍然是RESTful吗?
显然,问题是我想在没有数据的情况下使用PUT.想象一下想要重置密码的用户(就像在这个较旧的主题中一样).
你怎么看呢?可以不用POST/PUT方法发送内容吗?就个人而言,我没有任何问题,但我只是好奇其他人会怎么说.
我不确定这是限制、错误还是 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) 我面临着一个典型的问题。想象一下对象之间典型的 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 来解决,但我不确定这是否是一个好的解决方案以及是否有更好的解决方案。
一个最佳实践问题。如果要设计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) 我试图了解如何配置我的 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 驱动程序。能够与数据库一起正常运行)?
我想使用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)