小编Lut*_*tzi的帖子

Java Jpa @GeneratedValue 智能生成空值和非空值

我的本地 postgres 数据库中有 10-15 个实体。所有实体都包含一个整数类型的标识。请参阅下面的代码片段。

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", unique = true, nullable = false)
@NonNull
private Integer id;
Run Code Online (Sandbox Code Playgroud)

我的 CRUD(T 是我的实体)类包含用于将新实体插入适当表的 create 方法

private final JpaRepository<T, Integer> jpaRepository;
private final EntityManager entityManager;
private final Class<T> clazz;

@Override
public T create(T entity) {
    return getJpaRepository().saveAndFlush(entity);
}
Run Code Online (Sandbox Code Playgroud)

我正在努力实现下一个目标:

  1. 如果我调用 create 方法,其中实体包含!= nullid 字段的一些值 ( ) 然后将它与该 id 完全保存(未生成)。
  2. 如果我调用 create 方法,其中实体包含值== null- 然后使用自动生成的 id 作为数据库提供创建它。

为什么我需要这个?我正在尝试用我从 JSON 实体中获取的实体填充内存中的小型数据库,并使用相同的 ID 保存它。

我的问题是注释@GeneratedValue(strategy = GenerationType.AUTO/SEQUENCE/TABLE/IDENTITY) …

java spring identity jpa spring-data-jpa

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

Java - 频繁播放短音频片段时滞后

经过几天的互联网研究,我来到这里寻求帮助.我正在为朋友开发一款简短的2D游戏(而且真的只是为了好玩),而且我几天前就学会了Clips.在这个游戏中,玩家可以收集物体(几乎像马里奥的硬币).我的问题是,我收集硬币时播放的声音非常短(约为1秒,50kB),如果播放器在1秒内收集3个硬币,则Clip会使游戏滞后.如果先前的Clip已经结束,那么就没有滞后.但是如果先前的Clip还没有结束,那么再次尝试播放Clip会让游戏延迟(非常多).

我有一个非常小的电脑,不是很强大,但这个问题真的很烦人.当玩家投掷武器时,我得到完全相同的声音问题.我有一个短片,如果玩家太快扔这个武器,游戏就会滞后......

这是我已经尝试过的事情:

  • 使用一组剪辑(具有相同的声音),并播放当前未播放的剪辑
  • 使用不同的剪辑(相同的声音),和以前一样
  • 制作多个(相同声音)的副本,并将其加载到不同的剪辑中
  • 为播放声音创建一个单独的线程,但我对线程不满意:/

但这些都没有改变这个问题......

现在这是我的代码的一部分.首先是我用来将声音加载到Clip中的类.

package sound;

import java.io.IOException;
import java.net.URL;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
// My own package
import utils.Utils;

public class SoundLoader {

public static Clip loadSound(String path) {
    Utils.log("Loading " + path + " ... ");

    try {
        URL url = SoundLoader.class.getResource(path);
        AudioInputStream audioIn = AudioSystem.getAudioInputStream(url);
        AudioFormat format = audioIn.getFormat();

        DataLine.Info info = new DataLine.Info(Clip.class, format);
        Clip clip = (Clip)AudioSystem.getLine(info);
        clip.open(audioIn);

        Utils.log("success\n");
        return …
Run Code Online (Sandbox Code Playgroud)

java audio wav clip

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

如何在java 8的forEach中使用方法引用测试Predicate

我正在尝试 forEach 内部的方法引用

private static void printConditionally8(List<Person> people, Predicate<Person> predicate) {
    people.forEach(p-> { if (predicate.test(p)){
        System.out.println("Print here");}
    });
}
Run Code Online (Sandbox Code Playgroud)

以上工作正常,但我想使用方法参考使它更短,但是它给出了编译问题。有什么办法让它发生?

private static void printConditionally8(List<Person> people, Predicate<Person> predicate) {
    people.forEach({ if (predicate::test){
        System.out.println("Print here");}
     });
}
Run Code Online (Sandbox Code Playgroud)

java lambda java-8 method-reference

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

标签 统计

java ×3

audio ×1

clip ×1

identity ×1

java-8 ×1

jpa ×1

lambda ×1

method-reference ×1

spring ×1

spring-data-jpa ×1

wav ×1