小编Jau*_*era的帖子

Java Persistence API中FetchType LAZY和EAGER之间的区别?

我是Java Persistence API和Hibernate的新手.

Java Persistence API FetchType.LAZY和之间的区别是什么FetchType.EAGER

java orm hibernate jpa java-persistence-api

512
推荐指数
12
解决办法
44万
查看次数

JavaScript:如何使用正则表达式从字符串中删除空行?

我需要使用JavaScript删除HTML文本框中的空行.空行可以位于textarea元素中的任何位置.空行可以只是返回或空格加返回.

我期待一个正则表达式的解决方案.这是我尝试过的一些,但它们不起作用,无法弄清楚原因:

/^\s*\r?\n/g   

/^\s*\r?\n$/g
Run Code Online (Sandbox Code Playgroud)

编辑1

似乎aaronman和m.buettner建议的解决方案(我稍微修改了一下)有效:

string.replace(/^\s*\n/gm, "") 
Run Code Online (Sandbox Code Playgroud)

有人能说出为什么我的第一个正则表达式无效吗?

编辑2

在阅读了所有有用的答案之后,我想出了这个:

/^[\s\t]*(\r\n|\n|\r)/gm
Run Code Online (Sandbox Code Playgroud)

这是否会涵盖所有情况?

编辑3

这是最简洁的一个,涵盖所有空间(空白,制表符)和平台(Linux,Windows,Mac).

/^\s*[\r\n]/gm
Run Code Online (Sandbox Code Playgroud)

非常感谢m.buettner!

javascript regex blank-line

46
推荐指数
4
解决办法
5万
查看次数

克隆JPA实体

我有一个JPA实体已经存在于数据库中.
我希望有一个副本(具有不同的ID),并修改了一些字段.

最简单的方法是什么?喜欢:

  • 设置它的@Id字段null并保持它将工作?
  • 我是否必须为实体创建克隆方法(复制除了以外的所有字段@Id)?
  • 还有其他方法(比如使用克隆框架)吗?

java jpa clone

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

为什么需要JPA中的分离实体?

关于分离实体的问题总是有很多问题!

首先,它们经常导致LazyInitializationExceptionHibernate.是的,有另一个持久性提供程序,它们不会抛出异常,但我认为它们在一致性方面存在一些问题.考虑一下我们有AB实体有reference(@ManyToOne)A从而B需要非空.

我们开始了会话,加载了A实例,然后关闭了会话.之后我们尝试获取参考B.并假设另一个事务刚刚删除了我们AB实例.所以当我们从数据库查询时,我们找不到合适的B实例并得到null!

所以我们的合同被违反了.一些依赖于a.getB()返回对象的事实的代码 将抛出一个NullPointerException.对于持久化实体,这是不可能的,因为我们在获取对象本身的同一事务中具有所有延迟加载,因此所有操作都是原子的(如果我们当然有正确的事务隔离).

当您想要将持久性和分离的实体存储在一个实体中时,也会出现问题Set.这这种情况下,你应该总是覆盖equalshashCode,通常看起来很笨拙,因为我看不到一个很好的办法做到这一点.

要让一个独立的实体回到EntityManager你身边应该使用merge哪个是毛躁的.

所以我的问题是:是否存在真正需要分离实体的合理方案?此外,何时需要混合分离的和持久的实体并将分离的实体合并为一个新的EntityManager

java hibernate jpa

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

thenAccept和thenApply之间的区别

我正在阅读文档CompletableFuture和描述thenAccept()

返回一个新的CompletionStage,当此阶段正常完成时,将使用此阶段的结果作为所提供操作的参数执行.

而且thenApply()

返回一个新的CompletionStage,当这个阶段正常完成时,将执行此阶段的结果作为所提供函数的参数.``

谁能用一些简单的例子解释两者之间的区别?

java asynchronous java-8 completable-future

25
推荐指数
4
解决办法
9800
查看次数

如何在Java中裁剪一些图像区域?

我正在尝试执行以下代码:

private void crop(HttpServletRequest request, HttpServletResponse response){
    int x = 100;
    int y = 100;
    int w = 3264;
    int h = 2448;

    String path = "D:images\\upload_final\\030311175258.jpg";

    BufferedImage image = ImageIO.read(new File(path));
    BufferedImage out = image.getSubimage(x, y, w, h);

    ImageIO.write(out, "jpg", new File(path));

}
Run Code Online (Sandbox Code Playgroud)

但一直给我同样的错误:

java.awt.image.RasterFormatException: (x + width) is outside of Raster
sun.awt.image.ByteInterleavedRaster.createWritableChild(ByteInterleavedRaster.java:1230)
    java.awt.image.BufferedImage.getSubimage(BufferedImage.java:1156)
Run Code Online (Sandbox Code Playgroud)

我的错误在哪里?

java crop image-processing

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

JVM崩溃,错误='无法分配内存'(错误= 12)

我的代码崩溃了这个错误消息

Executing "/usr/bin/java  com.utils.BotFilter"
OpenJDK 64-Bit Server VM warning: INFO: 
os::commit_memory(0x0000000357c80000, 2712666112, 0) failed; 
error='Cannot allocate memory' (errno=12)
Run Code Online (Sandbox Code Playgroud)

Java Runtime Environment没有足够的内存来继续.本机内存分配(malloc)无法为提交保留内存分配2712666112字节.包含更多信息的错误报告文件保存为:/ tmp/jvm-29955/hs_error.log`

以下是生成的内容hs_error.log file:

https://pastebin.com/yqF2Yy4P

崩溃日志中的这一行对我来说很有趣:

Memory: 4k page, physical 98823196k(691424k free), swap 1048572k(0k free)
Run Code Online (Sandbox Code Playgroud)

这是否意味着机器有内存但交换空间不足?

这是崩溃日志中的meminfo,但我真的不知道如何解释它,比如MemFree和MemAvailable之间有什么区别?这个过程需要多少内存?

/proc/meminfo:

MemTotal:       98823196 kB
MemFree:          691424 kB
MemAvailable:    2204348 kB
Buffers:          145568 kB
Cached:          2799624 kB
SwapCached:       304368 kB
Active:         81524540 kB
Inactive:       14120408 kB
Active(anon):   80936988 kB
Inactive(anon): 13139448 kB
Active(file):     587552 kB
Inactive(file):   980960 kB
Unevictable:           0 kB …
Run Code Online (Sandbox Code Playgroud)

java memory-management

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

清理代码,无状态会话bean和私有状态

根据Robert C. Martin的干净代码方法应该有一个小签名.最好的情况是没有参数的方法.相反,建议使用状态变量.这非常有用.但是无状态会话bean呢?

这个名字有点令人困惑,因为SLSB可以拥有州.您只需要进行内务管理,这样就不会使用先前EJB调用中的状态.

回到干净的代码:我也喜欢在SLSB中使用实例变量.这样可以正常工作,如果你足够小心,你就不会遇到状态不一致的问题,因为每次公共方法调用都会覆盖状态.

到现在为止还挺好.但是如果用过的bean回到池中会发生什么?它采取了它的状态.根据状态的大小,这可能是真正的内存泄漏.JBoss对bean非常慷慨,产生了大量的bean,导致一些严重的内存消耗 - 一无所获.

因此,一种方法是在bean方法存在之前清理状态,并将bean返回到池中.但在我看来,这应该是无用的代码.

有没有正确的方法来处理这个问题?在这种情况下,最佳做法是什么?

java coding-style ejb-3.0 java-ee-6 ejb-3.1

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

使用 jpql 和 jpa 从日期字段中提取年份

我想从数据库中的一行中提取年份部分,以便将其与值进行比较。

这是我的功能

public List<Dossier> getAllDossierParAn() {
    Date date = new Date();
    Calendar calendar = new GregorianCalendar();
    calendar.setTime(date);
    int strI = calendar.get(Calendar.YEAR);
    TypedQuery<Dossier> query;
    query = em.createQuery("SELECT d FROM DOSSIER d WHERE EXTRACT(YEAR ,d.dateCreation)=2015", Dossier.class);
    System.out.println(strI);
    return query.getResultList();
}
Run Code Online (Sandbox Code Playgroud)

我总是得到

在 EntityManager 中创建查询时发生异常:异常描述:编译 [SELECT d FROM DOSSIER d WHERE EXTRACT(YEAR FROM d.dateCreation)=2015] 时出现问题。[14, 21] 抽象模式类型“DOSSIER”未知。[48, 62] 状态字段路径“d.dateCreation”无法解析为有效类型。

我直接在数据库中测试,可以用

select * from dossier where extract(year from date_creation)=2015
Run Code Online (Sandbox Code Playgroud)

我正在使用jpaand作为ejbIDE jdeveloper

java jpa jpql

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

在 Spring 数据休息中自定义分页和排序的查询

我正在使用 Spring 数据休息,并尝试findAll使用@Query. 但是,当我尝试这样做时,我收到此错误:

java.lang.IllegalStateException:检测到不明确的搜索映射。公共抽象 org.springframework.data.domain.Pagecourses.CourseRepository.findAll(org.springframework.data.domain.Pageable) 和公共抽象 java.lang.Iterablecourses.CourseRepository.findAll(org.springframework.data.domain. Sort) 映射到 /findAll! 调整配置以获得明确的路径!

当调用这些方法时,URL/findAll按照惯例不包含。检索未分类课程(但使用分页)的 URL 是

http://localhost:8080/v1/courses

和排序是

http://localhost:8080/v1/courses?sort=title

这是相关的代码,它相当简单:

public interface CourseRepository extends PagingAndSortingRepository<Course, Long> {

  @Override
  @Query("SELECT c FROM Course c WHERE c.visible = 'Yes'")
  Page<Course> findAll(Pageable pageable);

  @Override
  @Query("SELECT c FROM Course c WHERE c.visible = 'Yes'")
  Iterable<Course> findAll(Sort sort);
}
Run Code Online (Sandbox Code Playgroud)

我还尝试@NamedQuery在 Course 实体上使用具有相同错误消息的 。

编辑:

我发现该findAll(Pageable pageable)方法具有“内置”排序功能,但它不会对结果进行排序。当我点击以下 URL 并尝试按标题排序时,结果显然不是按标题排序的。但是,如果没有自定义@Query,结果将被排序。

http://localhost:8080/v1/courses?sort=title

java spring spring-data spring-data-rest

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