我有MyEntity类:
@Entity
@Table("entities)
public class MyEntity {
@ID
private String name;
@Column(name="age")
private int age;
@Column(name="weight")
private int weight;
...getters and setters..
}
在@RestController中有2个@GetMapping方法。第一个:
@GetMapping
public MyEntity get(){
...
return myEntity;
}
第二个:
@GetMapping("url")
public List<MyEntity> getAll(){
...
return entities;
}
需要提供:
1.@GetMap返回MyEntity类中描述的实体。
2.@GetMap("url")返回实体,就像它的一个字段带有@JsonIgnore一样。
更新:
例如,当我返回我的实体时,客户端将得到:
{
"name":"Alex",
"age":30,
"weight":70
}
我想在同一时间使用相同的ENTITY有机会根据URL发送给客户端:
1.
{
"name":"Alex",
"age":30,
"weight":70
}
2.
{
"name":"Alex",
"age":30
}
编辑:
您可以不返回 Entity 对象,而是将其序列化为 Map,其中映射键表示属性名称。因此,您可以根据包含参数将值添加到地图中。
@ResponseBody
public Map<String, Object> getUser(@PathVariable("name") String name, String include) {
User user = service.loadUser(name);
// check the `include` parameter and create a map containing only the required attributes
Map<String, Object> userMap = service.convertUserToMap(user, include);
return userMap;
}
举个例子,如果你有一张这样的地图并且想要所有的细节
userMap.put("name", user.getName());
userMap.put("age", user.getAge());
userMap.put("weight", user.getWeight());
现在,如果您不想显示重量,那么您可以只输入两个参数
userMap.put("name", user.getName());
userMap.put("age", user.getAge());
有用的参考文献1 2 3
您可以创建两个 DTO 类,将实体转换为相应的 DTO 类并返回它。
public class MyEntity {
private String name;
private int age;
private int weight;
public PersonDetailedDTO toPersonDetailedDTO() {
PersonDetailedDTO person = PersonDetailedDTO();
//...
return person;
}
public PersonDTO toPersonDTO() {
PersonDTO person = PersonDTO();
//...
return person;
}
}
public class PersonDetailedDTO {
private String name;
private int age;
private int weight;
}
public class PersonDTO {
private String name;
private int age;
}
@GetMapping
public PersonDTO get() {
//...
return personService.getPerson().toPersonDTO();
}
@GetMapping("/my_url")
public PersonDetailedDTO get() {
//...
return personService.getPerson().toPersonDetailedDTO();
}
您还可以使用 JsonView 注释,这使其更简洁一些。定义视图
public class View {
static class Public { }
static class ExtendedPublic extends Public { }
static class Private extends ExtendedPublic { }
}
实体
@Entity
@Table("entities)
public class MyEntity {
@ID
private String name;
@Column(name="age")
private int age;
@JsonView(View.Private.class)
@Column(name="weight")
private int weight;
...getters and setters..
}
在Rest控制器中
@JsonView(View.Private.class)
@GetMapping
public MyEntity get(){
...
return myEntity;
}
@JsonView(View.Public.class)
@GetMapping("url")
public List<MyEntity> getAll(){
...
return entities;
}
这里已经解释过了: https://stackoverflow.com/a/49207551/3005093
我正在开发Spring Boot应用程序与Spring Data JPA和H2数据库。我使用的是sping-data-jpa。当我使用ManyTo很多映射器类来获取另一个类的数据时。但是我发现它是NULL。 代码在github上 书班 著者班 测试中的测试代码捕捉器。班 我的代码有错误吗?或者其他方式? 非常感谢。
问题内容: 我有一段维护代码,应该在某些时间点向某些用户授予选择特权: 我想对所有表执行此操作。我可以在Oracle或MySQL中使用它来获取完整列表,然后像这样继续前进。 但是由于我已经有了对象,所以我想知道是否还有另一种方法来获取所有映射的实体,经理知道(我正在使用Hibernate进行内部编程)。 问题答案: 我可以通过两种方式获取所有映射的实体及其对应的SQL表(可能还有其他)。 最直接的
我需要用函数SSJS from mJson()读一个URL。例如Notes View的数据访问API http://{host}/{database}/api/data/collections/name/{name} 我该怎么做? P. S我认为(我不知道是否是真的),如果我使用Java代码(例如类URLReader从这个博客,我失去作者/读者的功能,因为是我的服务器,而不是当前用户执行读取流?
问题内容: 为了验证我收到的数据,我需要确保该长度不会超过数据库列的长度。现在,所有长度信息都存储在Hibernate映射文件中,是否可以通过编程方式访问此信息? 问题答案: 您可以实现,但这并不容易。您可能想要在启动时执行以下操作,并存储值的静态缓存。有很多特殊情况要处理(继承等),但它应适用于简单的单列映射。我可能遗漏了一些instanceof和null检查。
我需要拍摄一个div的屏幕截图,并需要将其发送到服务器(Java)进行存储。我公司项目中的现有代码使用Html2Canvas。js获取元素的位置(div,body…)返回base64数据URI,它工作正常,但在Chrome中冻结了应用程序。因此,我正在寻找其他解决方案,并从堆栈溢出中找到以下代码。 在这里,我得到的网址是Blob-Url(blob:https://fiddle.jshell.net
我试着从地图上得到这样一个随机元素 但我认为最好的方法是使用谓词 我读过这个https://docs.hazelcast.com/imdg/4.2/query/how-distributed-query-works.html#querying-with-sql-like-predicates不幸的是这对我没有帮助 我找不到办法 在sql中是这样的 如何在hazelcast中生成正确的谓词? 你能举