我有一个处理文本文件的应用程序。取决于文件生成器, 它搜索一些定义的文本。然后它对找到的文本执行不同的操作。 这些操作存储在数据库中,对应于以下实体:
@Entity
@Table(name = "file_generator")
public class FileGenerator {
@Id
@GeneratedValue
private long id;
private String name;
@OneToMany(mappedBy = "fileGenerator", cascade = CascadeType.ALL)
private Set<Action> actions = new HashSet<>();
}
@Entity
@Table(name = "detection_text")
public class DetectionText {
@Id
@GeneratedValue
private long id;
private String text;
}
@Entity
public class Action {
@Id
@GeneratedValue
private long id;
@Enumerated(EnumType.STRING)
private Name name;
@ManyToOne
@JoinColumn(name = "file_generator_id")
private FileGenerator fileGenerator;
@ManyToOne
@JoinColumn(name = "detection_text_id")
private DetectionText detectionText;
public enum Name {
DELETE, REPLACE_WITH_DEFAULT
}
}
例如,如果我想删除foo
生成的文件中bar
的所有出现,我会在我的数据库中写下以下内容:
file_generator:
+----+------+
| id | name |
+----+------+
| 1 | bar |
+----+------+
detection_text:
+----+------+
| id | text |
+----+------+
| 1 | foo |
+----+------+
动作:
+----+-------------------+-------------------+--------+
| id | file_generator_id | detection_text_id | name |
+----+-------------------+-------------------+--------+
| 1 | 1 | 1 | DELETE |
+----+-------------------+-------------------+--------+
现在我想创建一个网站,让用户将新的FileGenerator
与...一起存储
Action
关系和一个允许用户编辑此“视图”的网站。我在下面创建了一个片段
显示表格。
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" />
<form style="margin: 20px;">
<div class="form-group">
<label for="file-generator-name">File generator</label>
<input type="text" class="form-control" id="file-generator-name" name="file-generator-name" />
</div>
<div class="form-group">
<label for="delete-detection-texts">'DELETE' detection texts</label>
<select class="form-control" id="delete-detection-texts" name="delete-detection-texts" multiple="true">
<option value="1">All</option>
<option value="1">available</option>
<option value="1">detection</option>
<option value="1">texts</option>
</select>
</div>
<div class="form-group">
<label for="replace-detection-texts">'REPLACE_WITH_DEFAULT' detection texts</label>
<select class="form-control" id="replace-detection-texts" name="replace-detection-texts" multiple="true">
<option value="1">All</option>
<option value="1">available</option>
<option value="1">detection</option>
<option value="1">texts</option>
</select>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
如何实现此功能?它甚至可能吗?有更好的方法吗?
答案 0 :(得分:0)
我创建了一个支持表单的新bean:
public class FileGeneratorAndDetectionTexts {
private String fileGeneratorName;
private Set<DetectionText> deleteTexts;
private Set<DetectionText> replaceTexts;
}
我将服务层中的这个bean转换为OP中的相应对象。