我的Comment实体是自加入的,有一个subComment集合。
@Entity
public class Comment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String id;
@OneToMany(mappedBy = "parentComment", cascade = CascadeType.ALL)
private Set<Comment> subComments = new HashSet<>();
@ManyToOne
@JoinColumn(referencedColumnName = "id")
private Comment parentComment;
Run Code Online (Sandbox Code Playgroud)
在我的addComment方法中
public ResponseEntity<Comment> addComment(Comment comment) {
Comment currComment = commentRepository.save(comment);
if (currComment.getParentId() != null) {
Comment parent = commentRepository.findById(currComment.getParentId()).orElse(null);
if (parent != null) {
parent.addSubComment(currComment);
currComment.setParentId(parent.getId());
currComment.setParentComment(parent);
commentRepository.save(parent);
}
}
Comment responseComment = commentRepository.save(currComment);
return ResponseEntity.ok(responseComment);
}
Run Code Online (Sandbox Code Playgroud)
当我尝试建立反向关系(拥有方)时,
comment.setParentComment(parent);导致错误
comment.setParentComment(parent); 导致错误: …
我有三个实体,Session、Order 和 User(我的在线电影票项目的一部分)。在我的域模型中,Order 保留了 User 和 Session 的 fk。正如你在我的代码中看到的:
@Table(name="Orders")
@Entity
public class Order {
@ManyToOne
@JoinColumn(nullable = false)
private User user;
@ManyToOne
private Session session;
...
}
@Entity
@Table(name="Session")
public class Session {
@OneToMany(fetch=FetchType.LAZY,
cascade = CascadeType.ALL,
mappedBy = "session")
private List<Order> orders = new ArrayList<Order>();
...
}
@Table(name="User")
@Entity
public class User {
@OneToMany(cascade = { CascadeType.PERSIST,
CascadeType.MERGE,
CascadeType.REMOVE },
mappedBy = "user")
private @Getter Set<Order> orders = new HashSet<>();
...
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我可以CascadeType.ALL在 Session 和 User …
在我的应用程序中,我有一个英雄实体。我还希望能够返回每个英雄ID和名称的列表。我得到它与此工作:
@Repository
public interface HeroEntityRepository extends JpaRepository<HeroEntity, Long> {
@Query("select s.id, s.name from HEROES s")
List<Object> getIdAndName();
}
// in controller:
@GetMapping
public List<Object> getHeroNames() {
return heroEntityRepository.getIdAndName();
}
Run Code Online (Sandbox Code Playgroud)
我在另一篇文章中尝试了用接口替换Object的建议,但是随后我收到了一个空值列表([{{name“:null,” id“:null},{” name“:null,” id“ :null},//等)。自定义界面:
public interface HeroNameAndId {
Long getId();
String getName();
}
Run Code Online (Sandbox Code Playgroud)
当创建仅具有ID和名称值的Entity时,我收到了“ ConverterNotFoundException”。我不确定正确的方法是。我有它与对象一起工作,但这似乎不是很干净。
我的HeroEntity:
@Getter
@Builder
@Entity(name = "HEROES")
@AllArgsConstructor
public class HeroEntity extends HasId<Long> {
private String name;
private String shortName;
private String attributeId;
@ElementCollection private List<String> translations;
@OneToOne(cascade = CascadeType.ALL) private HeroIconEntity icon;
private String role; …Run Code Online (Sandbox Code Playgroud)
我有以下问题。我想在我的 Spring Boot 项目中执行这个查询。我尝试使用 JPA 存储库界面中的查询注释来做到这一点。但是它在内部联接中说“意外的选择”。当我直接在 mySQL 数据库上执行此查询时,它将起作用。
有没有人对这种情况有解决方案?
这是我的查询:
SELECT t1.*
FROM az_manager t1
INNER JOIN
(
SELECT maID, MAX(datum) AS max_date
FROM az_manager
WHERE maID IN (7243, 1)
GROUP BY maID
) t2
ON t1.maID = t2.maID AND t1.datum = t2.max_date
WHERE
t1.maID IN (7243, 1);
Run Code Online (Sandbox Code Playgroud)
这是我的课:
@Entity
@Table(name = "az_manager")
@IdClass(TnsWorkingHoursManagerId.class)
@Getter
@Setter
public class TnsWorkingHoursManager extends TnsObject{
@Id
@Column(name = "datum")
private long date;
@Id
@Column(name = "maid")
private int employeeId;
@Column(name = "typid")
private int …Run Code Online (Sandbox Code Playgroud) Spring Boot应用:
a@RestController接收以下有效负载:
{
"cartoon": "The Little Mermaid",
"characterNames": ["Ariel", "Prince Eric", "Sebastian", "Flounder"]
}
Run Code Online (Sandbox Code Playgroud)
我需要按以下方式处理它:
转换控制器接收到的数据:将角色名称替换为上一步从“卡通人物”微服务接收到的适当 ID。
{
"cartoon": "The Little Mermaid",
"characterIds": [1, 2, 3, 4]
}
使用转换后的数据向“cartoon-db”微服务发送 HTTP POST 请求。
我遇到的问题:
Reactive Programming我需要使用(非阻塞\异步处理)和Spring WebFlux(Mono| Flux)的范例来实现所有这些步骤Spring Reactive WebClient- 但我对该堆栈的经验为零,试图尽可能多地阅读它,再加上谷歌搜索很多但是仍然有很多未解答的问题,例如:
Q1 . 我已经配置了响应式 webClient,向“卡通人物”微服务发送请求:
public Mono<Integer> getCartoonCharacterIdbyName(String characterName) {
return WebClient.builder().baseUrl("http://cartoon-characters").build()
.get()
.uri("/character/{characterName}", characterName)
.retrieve()
.bodyToMono(Integer.class);
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我有一个卡通人物名称列表,对于每个角色我需要调用getCartoonCharacterIdbyName(String name)方法,我不确定串联调用它的正确选项,相信正确的选项:并行执行。
写了如下方法: …
reactive-programming spring-boot reactive spring-webflux spring-webclient
我正在尝试非官方 JAXB 指南 - 映射接口 \xe2\x80\x94 Project Kenai,第 3.2.1 节中显示的 JAXB 接口的简单示例,它对我不起作用。我使用的是最新的 JDK 1.8_70 并且没有使用任何特殊的库。为了完整起见,代码:
\n\n@XmlRootElement\nclass Zoo {\n @XmlAnyElement\n public List<Animal> animals;\n}\n\ninterface Animal {\n void sleep();\n void eat();\n ...\n}\n\n@XmlRootElement\nclass Dog implements Animal { ... }\n\n@XmlRootElement\nclass Lion implements Animal { ... }\nRun Code Online (Sandbox Code Playgroud)\n\n对此有什么帮助吗?我收到的错误是:
\n\n[com.sun.istack.internal.SAXException2: class testjaxb.Cat nor any of its super class is known to this context.\njavax.xml.bind.JAXBException: class testjaxb.Cat nor any of its super class is known to this context.]\nRun Code Online (Sandbox Code Playgroud)\n\n编辑:发布 JAXBContext.newInstance 代码:
\n\nZoo …Run Code Online (Sandbox Code Playgroud) 有没有办法TupleConverter在 Spring Data 中编写和注册转换器?当我在 Repository 接口中有一个 @Query 注释并要求投影时,我收到了这个异常。
界面:
public interface ProjectRepository extends JpaRepository<Project, Integer> {
@Query("select p.projectId, p.projectName, p.techstack from Project p")
public List<ProjectItem> findAllForTest();
}
Run Code Online (Sandbox Code Playgroud)
DTO:
public class ProjectItem {
private final Integer projectId;
private final String projectName;
private final String techstack;
@JsonCreator
public ProjectItem(
@JsonProperty("projectId") Integer projectId,
@JsonProperty("projectName") String projectName,
@JsonProperty("techstack") String techstack
) {
this.projectId = projectId;
this.projectName = projectName;
this.techstack = techstack;
}
public Integer getProjectId() {
return projectId;
}
public String getProjectName() …Run Code Online (Sandbox Code Playgroud) 我有两个Entity像下面...
@Entity
@Table(name = "USER")
public class User {
@Id
private Long id;
private String name;
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "groupMemberList")
@Fetch(FetchMode.SELECT)
private List<Group> groupList = new ArrayList<>();
// Getters - Setters
}
@Entity
@Table(name = "GROUP")
public class Group {
@Id
private Long id;
private String name;
@ManyToMany(fetch = FetchType.LAZY/*, mappedBy = "groupList"*/)
@Fetch(FetchMode.SELECT)
@JoinTable(name = "SEC_GROUP_VS_MEMBER", joinColumns = @JoinColumn(name = "GROUP_ID"),
inverseJoinColumns = @JoinColumn(name = "MEMBER_ID"))
private List<User> groupMemberList;
// Getters - Setters
}
Run Code Online (Sandbox Code Playgroud)
我想 …
我不明白为什么会失败;
Map<String, Boolean> iMap = Arrays.asList("1","2","3","4","5").stream()
.collect(Collectors.toMap(k->k, Boolean.TRUE));
Run Code Online (Sandbox Code Playgroud)
错误消息:
Multiple markers at this line
- Type mismatch: cannot convert from T to K
- The method toMap(Function<? super T,? extends K>, Function<? super T,? extends U>)
in the type Collectors is not applicable for the arguments ((<no type> k) -> {}, Boolean)
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏。
我一直在努力与链接表中的附加列建立多对多关系。
这些是我的实体:
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
public class Post {
@Id
@GeneratedValue
private Long id;
private String name;
@OneToMany(mappedBy = "post", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonIgnore
private List<PostTag> tags = new ArrayList<>();
//getters and setters
public void addTag(Tag tag){
PostTag postTag = new PostTag(this, tag);
tags.add(postTag);
tag.getPosts().add(postTag);
}
public void removeTag(Tag tag) {
for (Iterator<PostTag> iterator = tags.iterator();
iterator.hasNext(); ) {
PostTag postTag = iterator.next();
if (postTag.getPost().equals(this) &&
postTag.getTag().equals(tag)) {
iterator.remove();
postTag.getTag().getPosts().remove(postTag);
postTag.setPost(null);
postTag.setTag(null);
}
}
}
@Override …Run Code Online (Sandbox Code Playgroud) 我从这里扩展我的问题:使用 JPA/Hibernate 使用三个表定义 CompositeKey?。在此示例中,我希望创建复合键来创建 PRODUCT_ID、CATEGORY_ID、STOCK_ID 的唯一组合。
我开发了下面的代码,但不确定如何将记录保存到数据库中。
Stock.java
@Entity
public class Stock implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "STOCK_ID", unique = true, nullable = false)
private Integer stockId;
@Column(name = "STOCK_CODE", unique = true, nullable = false, length = 10)
private String stockCode;
@Column(name = "STOCK_NAME", unique = true, nullable = false, length = 20)
private String stockName;
// Owner of the relationship
@OneToMany(fetch = FetchType.LAZY, …Run Code Online (Sandbox Code Playgroud)