我是Java Persistence API和Hibernate的新手.
Java Persistence API FetchType.LAZY和之间的区别是什么FetchType.EAGER?
我需要使用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!
我有一个JPA实体已经存在于数据库中.
我希望有一个副本(具有不同的ID),并修改了一些字段.
最简单的方法是什么?喜欢:
@Id字段null并保持它将工作?@Id)?关于分离实体的问题总是有很多问题!
首先,它们经常导致LazyInitializationExceptionHibernate.是的,有另一个持久性提供程序,它们不会抛出异常,但我认为它们在一致性方面存在一些问题.考虑一下我们有A和B实体有reference(@ManyToOne)A从而B需要非空.
我们开始了会话,加载了A实例,然后关闭了会话.之后我们尝试获取参考B.并假设另一个事务刚刚删除了我们A和B实例.所以当我们从数据库查询时,我们找不到合适的B实例并得到null!
所以我们的合同被违反了.一些依赖于a.getB()返回对象的事实的代码
将抛出一个NullPointerException.对于持久化实体,这是不可能的,因为我们在获取对象本身的同一事务中具有所有延迟加载,因此所有操作都是原子的(如果我们当然有正确的事务隔离).
当您想要将持久性和分离的实体存储在一个实体中时,也会出现问题Set.这这种情况下,你应该总是覆盖equals和hashCode,通常看起来很笨拙,因为我看不到一个很好的办法做到这一点.
要让一个独立的实体回到EntityManager你身边应该使用merge哪个是毛躁的.
所以我的问题是:是否存在真正需要分离实体的合理方案?此外,何时需要混合分离的和持久的实体并将分离的实体合并为一个新的EntityManager?
我正在阅读文档CompletableFuture和描述thenAccept()是
返回一个新的CompletionStage,当此阶段正常完成时,将使用此阶段的结果作为所提供操作的参数执行.
而且thenApply()是
返回一个新的CompletionStage,当这个阶段正常完成时,将执行此阶段的结果作为所提供函数的参数.``
谁能用一些简单的例子解释两者之间的区别?
我正在尝试执行以下代码:
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)
我的错误在哪里?
我的代码崩溃了这个错误消息
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:
崩溃日志中的这一行对我来说很有趣:
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) 根据Robert C. Martin的干净代码方法应该有一个小签名.最好的情况是没有参数的方法.相反,建议使用状态变量.这非常有用.但是无状态会话bean呢?
这个名字有点令人困惑,因为SLSB可以拥有州.您只需要进行内务管理,这样就不会使用先前EJB调用中的状态.
回到干净的代码:我也喜欢在SLSB中使用实例变量.这样可以正常工作,如果你足够小心,你就不会遇到状态不一致的问题,因为每次公共方法调用都会覆盖状态.
到现在为止还挺好.但是如果用过的bean回到池中会发生什么?它采取了它的状态.根据状态的大小,这可能是真正的内存泄漏.JBoss对bean非常慷慨,产生了大量的bean,导致一些严重的内存消耗 - 一无所获.
因此,一种方法是在bean方法存在之前清理状态,并将bean返回到池中.但在我看来,这应该是无用的代码.
有没有正确的方法来处理这个问题?在这种情况下,最佳做法是什么?
我想从数据库中的一行中提取年份部分,以便将其与值进行比较。
这是我的功能
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。
我正在使用 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 是
和排序是
这是相关的代码,它相当简单:
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,结果将被排序。
java ×9
jpa ×4
hibernate ×2
asynchronous ×1
blank-line ×1
clone ×1
coding-style ×1
crop ×1
ejb-3.0 ×1
ejb-3.1 ×1
java-8 ×1
java-ee-6 ×1
javascript ×1
jpql ×1
orm ×1
regex ×1
spring ×1
spring-data ×1