我有一个使用Spring JPA的Spring项目。我有一个Brands
和Products
的表,我已经将它们映射到@ManyTo很多
中,如下所示:
品牌实体:
@Entity
public class Brand{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY, generator =
"brand_seq_gen")
@SequenceGenerator(name = "brand_seq_gen", sequenceName = "ISEQ$$_73370", allocationSize = 1)
@Column(name = "BRAND_ID")
private Long brandId;
@Column(name = "BRAND_NAME")
private String brandName;
@ManyToMany(fetch = FetchType.LAZY, cascade = {
CascadeType.ALL
})
@JoinTable(
name = "BRAND_PRODUCT",
joinColumns = @JoinColumn(name = "BRAND_ID", referencedColumnName = "BRAND_ID"),
inverseJoinColumns = @JoinColumn(name = "PRODUCT_ID", referencedColumnName = "PRODUCT_ID")
)
private Set<Product> products = new HashSet<>();
//CONSTRUCTORS, SETTERS, AND GETTERS
}
产品实体:
@Entity
public class Product{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "prod_seq_gen")
@SequenceGenerator(name = "prod_seq_gen", sequenceName = "ISEQ$$_73373", allocationSize = 1)
@Column(name = "PRODUCT_ID")
private Long productId;
@Column(name = "TYPE_DESCRIPTION")
private String typeDescription;
public Product() {
}
@ManyToMany(mappedBy = "products", fetch = FetchType.LAZY)
private Set<Brand> brands = new HashSet<>();
//Setters, Getters, and Constructors
例如,我只想获取品牌的信息
仅获取(品牌标识和品牌名称),而不获取产品,我如何仅获取品牌信息?非常感谢。
编辑1
我想访问所有品牌,但不访问每个品牌的产品
。可能吗?还是我要创建另一个类?
--编辑2--
下面是使用BrandRepository时的一个示例查询。findall()
[ {
"brandId" : 1,
"brandName" : "Electrolux",
"products" : [ {
"productId" : 4,
"typeDescription" : "Refrigerator"
}, {
"productId" : 3,
"typeDescription" : "Washing Machine"
} ]
}, {
"brandId" : 2,
"brandName" : "Midea",
"products" : [ {
"productId" : 4,
"typeDescription" : "Refrigerator"
}, {
"productId" : 2,
"typeDescription" : "Air Conditioner"
}, {
"productId" : 3,
"typeDescription" : "Washing Machine"
} ]
}, {
"brandId" : 3,
"brandName" : "Samsung",
"products" : [ {
"productId" : 1,
"typeDescription" : "TV"
}, {
"productId" : 4,
"typeDescription" : "Refrigerator"
} ]
}, {
"brandId" : 4,
"brandName" : "LG",
"products" : [ {
"productId" : 1,
"typeDescription" : "TV"
} ]
} ]
我想要的应该是brandId
和brandName
列,而不是@manytomy关系产生的产品。
--编辑4——我通过
日志记录
发现数据库被查询了两次,以检索两个表,这就是为什么我认为只使用
@Query
和一个投影可能更好的原因。
获取某些实体属性的最简单方法是使用投影
回到您的示例,您可以像这样定义投影接口:
interface BrandNameAndId {
Long getId();
String getBrandName();
}
在你的品牌存储库中有这样一种方法:
List<BrandNameAndId > findAllProjectedBy();
一定要有Spring。jpa。在应用程序中打开视图=错误。属性文件。如果将其设置为true,则在对实体调用get方法时,最终将查询数据库。
使用hibernate延迟加载,只获取品牌,而不获取子项(产品)。
请看一下这篇文章,了解延迟加载的含义。
我有一个Spring Boot应用程序连接到本地mongoDB数据库。当我试图从集合中获取所有记录时,它返回一个空数组。在输出中,它表示已连接到端口27017。它在运行应用程序时不会给我任何错误,但在我键入时只返回一个空数组http://localhost:8080/courses/我错过了什么? 模范班 控制器类 存储库类 MongoDb输出
问题内容: 我有一个LinearLayout,此LinearLayout将容纳动态放置的视图。我需要找出LinearLayout子级的宽度,但是必须在onCreate方法中完成。通过研究,我发现您不能通过此方法使用getWidth。因此,我改为使用onWindowFocusChanged,它适用于父级LinearLayout(向我返回实际大小),但不适用于其子级。 我注意到的另一件事是,当屏幕逐渐
本文向大家介绍jQuery.fn的init方法返回的this指的是什么对象?为什么要返回this?相关面试题,主要包含被问及jQuery.fn的init方法返回的this指的是什么对象?为什么要返回this?时的应答技巧和注意事项,需要的朋友参考一下 [jQuery] jQuery.fn的init方法返回的this指的是什么对象?为什么要返回this?
这是我的代码: 因为我使用POM设计模式,所以我为此创建了一种方法: 这是超文本标记语言标签: 我的问题是,即使存在WebElement,isDisplayed()也返回false。
我在新的spring boot应用程序中遇到了一个奇怪的缓慢现象,当我获取一个表用于报告时。 这是一个简单的表,没有对其他表的引用,它有5列。行数为50k。因此,我使用了简单的findAll()方法,该方法在JpaRepository中提供。 当“目标”结果是实体时,findAll()执行需要5分钟。当我设置DTO类投影或接口投影时,执行需要1-2分钟。 我相信对于那么多的数据来说,这仍然太多了。
问题内容: 由于在Java中使用了泛型,我最终不得不实现一个具有as返回类型的函数: 并且编译器要求我返回 一些东西 。现在我只是返回,但是我想知道这是否是好的编码实践… 我问的是 V oid,而不是 V oid。类, 而不是 保留关键字。 我也试过,,,,没有回报可言,但都不会在所有的工作。(出于或多或少明显的原因) 那么,如果函数的返回类型为,我应该返回什么呢? 该课程的一般用途是什么? 问题