我确实在我的项目中有三个模型对象之间的关系(帖子末尾的模型和存储库片段).
当我打电话时PlaceRepository.findById它会触发三个选择查询:
( "SQL")
SELECT * FROM place p where id = argSELECT * FROM user u where u.id = place.user.idSELECT * FROM city c LEFT OUTER JOIN state s on c.woj_id = s.id where c.id = place.city.id这是相当不寻常的行为(对我而言).在阅读Hibernate文档后我可以告诉它应该总是使用JOIN查询.在类中FetchType.LAZY更改为 查询(使用附加SELECT 查询)时,查询没有区别,更改为 (使用JOIN查询)时类相同.FetchType.EAGERPlaceCityFetchType.LAZYFetchType.EAGER
当我使用CityRepository.findById抑制火时两个选择:
SELECT * FROM city c where id = argSELECT * FROM state s where id = city.state.id我的目标是在所有情况下都有一个sam行为(总是JOIN或SELECT,但是JOIN首选).
型号定义:
地点:
@Entity
@Table(name = …Run Code Online (Sandbox Code Playgroud) 我有一个任务,我必须连接2D平面中的所有点.有四个条件需要满足:
图像可视化问题:

错误的图像正确连接点,虽然总长度大于左侧的长度.
起初,我考虑对点进行排序,并使用扫描线进行排序并构建所有可能性的树,尽管它看起来像是一种复杂解决方案,具有巨大的复杂性.因此,我寻找更好的方法.我会很感激一些提示要做什么,或者我怎么能解决这个问题.
我尝试重定向301 Status Code(你知道我想成为SEO友好等).
我使用InternalResourceViewResolver所以我想使用某种类似于return "redirect:http://google.com"我的控制器中的代码.这虽然会发送一个302 Status Code
我尝试过使用a HttpServletResponse来设置标题
@RequestMapping(value="/url/{seo}", method = RequestMethod.GET)
public String detail(@PathVariable String seo, HttpServletResponse response){
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return "redirect:http://google.com";
}
Run Code Online (Sandbox Code Playgroud)
它仍然返回302.
在检查文档和Google搜索结果后,我想出了以下内容:
@RequestMapping(value="/url/{seo}", method = RequestMethod.GET)
public ModelAndView detail(@PathVariable String seo){
RedirectView rv = new RedirectView();
rv.setStatusCode(HttpStatus.MOVED_PERMANENTLY);
rv.setUrl("http://google.com");
ModelAndView mv = new ModelAndView(rv);
return mv;
}
Run Code Online (Sandbox Code Playgroud)
它确实工作得很好,正如预期的那样,返回代码 301
我想在不使用ModelAndView的情况下实现它(也许它完全没问题).可能吗?
注意:包含的片段只是详细信息控制器的一部分,重定向仅在某些情况下发生(支持旧版URL).
假设我有一个代表一个人的域 java 类:
class Person {
private final String id; // government id
private String name;
private String status;
private Person(String id, String name) {
this.id = id;
this.name = name;
this.status = "NEW";
}
Person static createNew(String id, String name) {
return new Person(id, name);
}
void validate() {
//logic
this.status = "VALID";
}
public static final class Builder {
private String id;
private String name;
private String status;
private Builder() {
}
public static Builder aPerson() {
return …Run Code Online (Sandbox Code Playgroud)