Java 在具有外部属性的表上使用hibernate选择除一列以外的所有列
我有一个正在使用Hibernate管理数据库内容的working.jspWebApp。随着webapp的发展,我现在面临服务器上的内存问题。所以我需要重写它一点,以消耗更少的内存 我的代码如下:Java 在具有外部属性的表上使用hibernate选择除一列以外的所有列,java,hibernate,Java,Hibernate,我有一个正在使用Hibernate管理数据库内容的working.jspWebApp。随着webapp的发展,我现在面临服务器上的内存问题。所以我需要重写它一点,以消耗更少的内存 我的代码如下: @Table(name="items") public class Items implements Serializable { @Id @GeneratedValue @Column(name="ID") private long id; @Column(name="Name
@Table(name="items")
public class Items implements Serializable {
@Id
@GeneratedValue
@Column(name="ID")
private long id;
@Column(name="Name", nullable=false)
private String name;
@Column(name="Image", nullable=true, length=1048576)
private byte[] image;
@Column(name="Text", nullable=true, columnDefinition="TEXT")
private String text;
@Column(name="AvailablePieces", nullable=true)
private int storedAmount;
@Column(name="Price", nullable=true)
private int price;
@ManyToOne
@JoinColumn(name="colorId")
private ItemColors color;
@OneToMany(mappedBy = "key.item")
@Cascade(CascadeType.ALL)
Set<Orders_Items> orderItems = new HashSet<Orders_Items>();
....
}
问题是,一个常见的用法是一次获取约500条记录,而只需要显示约10-15条记录的图像
有没有一种方法可以告诉Hibernate在一个select中选择除图像之外的所有列,然后在稍后计算需要其图像的项目时执行另一个select以检索图像(类似于“select i.Image FROM items i WHERE i.id=:id”)
换句话说:选择特定列(包括@ManyToOne映射列)的正确语法是什么?它会引发ClassCastException,例如“选择i.color FROM…”?使用投影功能: 另一种是执行延迟抓取:
从项目i中选择i.columnName,i.otherColumnName,其中…
这可能不会映射到您的实体。只是不要将图像映射到它。当你想要一些实体的图像时,使用一个特定的查询来加载它们。@XtremeBiker我不知道为什么我没有想到这一点。。太明显了。。谢谢
@NamedQuery(itemsByName",
query = "* FROM Items i WHERE (i.name LIKE '%' || :iname || '%')"
),