Mih*_*sek 6 java spring jpa spring-data-jpa spring-boot
我正在我的应用程序中构建一个菜单,因此我创建了实体 MenuItem,它代表我的菜单中的一项。这可以是文件或目录。
但是,我想知道一个目录是否有子目录,因为如果没有,我不想显示它。我也不希望对这么多的子项进行硬编码,因为这意味着我每次添加内容时都必须更新该值。
我想知道的是,是否有一种方法可以使用查询而不是持久值来映射属性。
这是我的 MenuItem.java 文件:
@Entity
@Table(name = "menu_item")
public class MenuItem {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column
private long parent;
@Column
private String name;
@Column
private long num_of_childs;
@Enumerated(EnumType.STRING)
@Column
private MenuItemType type;
@ManyToOne
@JoinColumn(name = "file_id")
private FileItem file;
/* getters and setters... */
}
Run Code Online (Sandbox Code Playgroud)
我想要的是这样的:
@Column
@Transient
@Query("SELECT COUNT(i) as num_of_childs FROM MenuItem i WHERE parent = i.id")
private long num_of_childs;
Run Code Online (Sandbox Code Playgroud)
甚至可以做这样的事情吗?
Hibernate 允许您使用@Formula 来做到这一点。
例子 :
@Formula("SELECT COUNT(i) FROM MenuItem i WHERE parent = i.id")
private long num_of_childs;
Run Code Online (Sandbox Code Playgroud)
但是,就您的情况而言,最好保留子菜单项的列表,因为无论如何您都需要在应用程序中使用它。
| 归档时间: |
|
| 查看次数: |
6991 次 |
| 最近记录: |