当我在Embedabble中有一个CollectionOfElements时,我似乎得到了一个ConcurrentModificationException.
如果想拥有它,那么如果我将Route从Embedabble更改为Entity,那么一切正常.我甚至尝试过添加@Version,但这似乎不起作用.
这是我的课程片段.Kart.java:
@Entity
public class Kart {
@Id @GeneratedValue
private Long id;
@Column(nullable=false,length=256)
@NotNull
@Length(max=256)
private String name;
@OneToOne(cascade=CascadeType.ALL)
private File file;
@Version
private int version;
@CollectionOfElements
private Set<Route> route;
Run Code Online (Sandbox Code Playgroud)
Route.java:
@Embeddable
public class Route {
@Parent
private Kart kart;
@NotNull
@Column(nullable = false, length = 256)
private String name;
@NotNull
@Column(nullable = false)
private Boolean visible = Boolean.valueOf(true);
@CollectionOfElements
private Set<Coordinates> coordinates;
@Version
private int version;
Run Code Online (Sandbox Code Playgroud)
Coordinates.java:
@Embeddable
public class Coordinates {
@NotNull
private int x;
@NotNull
private …
Run Code Online (Sandbox Code Playgroud) 开发Java时,您总是了解到最好使用List接口创建ArrayList作为存储列表的变量的类型.像这样
List<String> myList = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
但是,通过查看包中包含的很多android示例,他们已经使用Class创建了列表.
ArrayList<String> myList = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
这有什么原因吗?是否更快,更轻或明确设置类?
我正在写一个非常简单的查询,但由于某种原因我得到重复的值.
Criteria cr = session.createCriteria(ProcessInstance.class, "p")
.add(Restrictions.isNull("end"));
@Cleanup ScrollableResults sr = cr.scroll(ScrollMode.FORWARD_ONLY);
while (sr.next()) {
pi = (ProcessInstance) sr.get(0);
String id = pi.getId(); //Getting duplicate values
}
Run Code Online (Sandbox Code Playgroud)
在pi.getId()
返回重复值.即:*9,9,10,10,11,11 etc*
但是,直接在mysql中运行此查询
SELECT * FROM JBPM_PROCESSINSTANCE J where J.END_ IS NULL
Run Code Online (Sandbox Code Playgroud)
不返回重复值.
谁能发现什么是错的?
我试图在Java 8中理解Lambdas.
假设我有一个如下所示的Person类:
public class Person implements {
String name;
GenderEnum gender;
int age;
List<Person> children;
}
Run Code Online (Sandbox Code Playgroud)
现在我要做的是找到所有女性,有10岁以下孩子的人.
前java 8我会这样做:
List<Person> allPersons = somePeople();
List<Person> allFemaleWithChildren = new ArrayList<>();
for(Person p : allPersons) {
for(Person child : p.getChildren()) {
if(child.getAge() < 10 && p.getGender() == GenderEnum.Female) {
allFemaleWithChildren.add(p);
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在allFemaleWithChildren应该拥有我想要的东西.我一直试图使用流做同样的事情,我认为我需要使用某种地图,过滤和减少
allPersons.stream()
//filter females
.filter(p -> p.getGender == GenderEnum.Female)
//get the children
.map(c -> c.getChildren())
//filter the ones that are less than 10 years
.filter(c -> c.getAge() < 10) …
Run Code Online (Sandbox Code Playgroud) 我从json文件上传数组.每1.5秒我检查文件是否有任何变化(目前我在一个文件上测试没有任何变化),但当我检查是否
if ( this.itemsParentArray[i] !== this.itemInArray[i] )
Run Code Online (Sandbox Code Playgroud)
它始终显示它不相等,并且console.log(""不等于")
我错过了代码中的内容吗?这里是:
export class HomeComponent {
itemsParentArray = [];
itemInArray = [];
myRes: Content;
showAssigned:boolean = false;
constructor(private structureRequest: StructureRequestService) {
setInterval(() => {
this.timerGetStructure();
}, 1500);
}
// using with setInterval to get new data and sets into content Array with this.updateItems(result) if it's new
timerGetStructure() {
this.structureRequest.sendRequest().subscribe((result) => this.updateItems(result));
}
updateItems(result) {
this.myRes = result;
this.itemInArray = this.myRes.content;
for ( let i = 0; i < this.itemInArray.length; i++) {
if ( …
Run Code Online (Sandbox Code Playgroud) 我有多个带@Scheduled
注释的组件,我看到Spring一次只启动一个,即使它们被安排在同一时间运行.
我的用例如下.我希望每个@Scheduled注释都在自己的线程中运行,但每个线程只运行一次.
给定这个带有两个调度程序的伪代码:
@Scheduled(cron = "0 * * * * *") //run every minute
public void methodA() {
log.info("Running method A");
executeLongRunningJob("Finished method A");
}
@Scheduled(cron = "0 * * * * *") //run every minute
public void methodB() {
log.info("Running method B");
executeLongRunningJob("Finished method B");
}
private void executeLongRunningJob(String msg) {
Thread.sleep(70 seconds);
System.out.println(msg);
}
Run Code Online (Sandbox Code Playgroud)
请注意,该任务所需的时间比计划的调度程序运行时间长.这很关键.我不希望调度程序在完成运行之前重新启动.
从开箱即用运行此代码为我提供了以下输出:
Running method A
Finished method A
Running method B
Finished method B
Running method A
Finished method A …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个JSF应用程序,我有许多用户表单,我使用JSF验证.我有一个让我烦恼的问题,用一个例子告诉它会更容易.
<h:panelGroup>
<h:selectOneRadio id="gender" value="#{registrationController.person.gender}"
required="true" requiredMessage="#{msg.commonErrorBlankField}">
<f:selectItems value="#{registrationController.genders}" />
</h:selectOneRadio>
<rich:spacer />
<rich:message for="gender" errorLabelClass="errorLabel">
<f:facet name="errorMarker">
<h:graphicImage value="#{msg.imageExclamation}" />
</f:facet>
</rich:message>
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
如果未选择无线电选项,则显示所需的消息.当用户做出选择时,我会看到验证错误.很公平 !我的问题是当用户导航到下一页然后通过使用浏览器的后退按钮再次返回到此页面时,我可以看到相应地选择了我的性别字段,但仍然显示验证错误.
有没有人知道在我单击命令按钮后是否有解决方法来清除h:message字段,这样当我回到同一页面时,不会显示验证错误?
我有一个大约70个领域的Enum.
我希望其中10个以特定顺序显示,然后我希望其余部分使用比较器按字母顺序显示.我尝试了很多东西,但我无法让它发挥作用.
这是一个具有简化属性的枚举示例, 我希望首先显示Picard,Worf和William,然后按字母顺序显示其余部分
我不能使用任何第三个库.它必须是java核心.所以如果你想提供番石榴答案,或者apache commons的答案,除了java核心之外,请这样做.
public enum StarTrek {
JeanLucPicard("Picard"),
GeordiLaForge("Geordi"),
DiannaTroi("Dianna"),
Worf("Worf"),
WilliamRiker("William"),
Q("Q");
private String label;
StarTrek(String label) { this.label = label; }
@Override public String toString() { return label; }
}
List<StarTrek> specificOrder = Arrays.asList(StarTrek.JeanLucPicard, StarTrek.Worf, StarTrek.WilliamRiker);
Comparator<StarTrek> comp = new Comparator<StarTrek>() {
@Override
public int compare(StarTrek o1, StarTrek o2) {
//TODO: loop through the specific order, and display those first, then for the rest, go alphabetic
return 0;
}
};
List<StarTrek> all = Arrays.asList(StarTrek.values());
Collections.sort(all, …
Run Code Online (Sandbox Code Playgroud) 我有一个家长 pom。当我在父级上并编写mvn clean install
我的 dropwizard 应用程序时,构建得很好。
但是,在 Intellij 中它失败了,因为它找不到我的config.yml
文件。
问题是我需要在 Intellij 中包含我的模块目录,而不是在 Maven 中。这是为什么?
运行mvn install
这个作品
public static void main(String[] args) throws Exception {
new CivilizationApplication().run(new String[]{"server", "src/main/resources/config.yml"});
}
Run Code Online (Sandbox Code Playgroud)
在 Intellij 中我必须更改为以下内容
public static void main(String[] args) throws Exception {
new CivilizationApplication().run(new String[]{"server", "civilization-rest/src/main/resources/config.yml"});
}
Run Code Online (Sandbox Code Playgroud)
如何配置 Intellij,使其无需指定模块目录即可工作?
我有一个非常简单的Map,想在Jackson中进行序列化和反序列化,但是我无法使其正常工作。
我尝试了以下方法:
@JsonSerialize(keyUsing=TurnKeySerializer.class)
@JsonDeserialize(keyUsing = TurnKeyDeserializer.class)
Map<TurnKey, PlayerTurn> publicTurns = new TreeMap<>();
@JsonIgnoreProperties(ignoreUnknown = true)
@Data //Creates Getter/Setter etc
public class TurnKey implements Comparable<TurnKey> {
private final int turnNumber;
private final String username;
public TurnKey(int turnNumber, String username) {
this.turnNumber = turnNumber;
this.username = username;
}
@Override
public int compareTo(TurnKey o) {
int v = Integer.valueOf(turnNumber).compareTo(o.getTurnNumber());
if (v != 0) {
return v;
}
return username.compareTo(o.getUsername());
}
@Override
public String toString() {
return "{" +
"turnNumber:" + turnNumber +
", …
Run Code Online (Sandbox Code Playgroud) java ×8
collections ×2
hibernate ×2
android ×1
angular ×1
arraylist ×1
asynchronous ×1
comparator ×1
concurrency ×1
criteria ×1
dropwizard ×1
jackson ×1
java-8 ×1
java-stream ×1
jbpm ×1
jpa ×1
jsf ×1
lambda ×1
list ×1
maven ×1
richfaces ×1
sorting ×1
spring ×1
spring-boot ×1