小编Tho*_*Lee的帖子

Hibernate:@ManyToOne(fetch = FetchType.LAZY)不适用于非主键引用列

我有2张桌子:Order [OrderId(PK), OrderShipmentCode, ...]Shipment[ShipmentId(PK), ShipmentCode, ...].

Order课堂上,我声明shipment了如下字段:

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "OrderShipmentCode", referencedColumnName = "ShipmentCode", insertable = false, updatable = false, nullable = false)
private Shipment shipment;
Run Code Online (Sandbox Code Playgroud)

当我得到列表时Order,Shipment也会加载(我看到很多单独的SELECT查询).但是我希望它Shipment是懒惰的,而不是与它一起提取Order.

对于其他表,如果引用的列是主键,则结果与预期一致(使用延迟加载).在我的情况下,ShipmentCode不是Shipment表的主键,并且Hibernate不使用延迟加载.

你能告诉我如何实现这个目标吗?

编辑: 查询代码如下:

Criteria criteria = HibernateUtil.getSessionFactory().getCurrentSession().createCriteria(Order.class);
List result = criteria.list();
Run Code Online (Sandbox Code Playgroud)

SQL查询是:1 Order表的SELECT语句和一堆SELECT语句Shipment

java hibernate jpa lazy-loading one-to-one

18
推荐指数
1
解决办法
2万
查看次数

WPF将内部控件与父数据上下文绑定

我做了一个用户控件

<UserControl x:Class="MyApp.MyControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d"  x:Name="uc">
<Grid Width="Auto" Height="Auto">
    <TextBlock Text="{Binding Path=DataContext.TextContent, ElementName=uc}"/>
    <TextBlock Text="{Binding Path=DataContext.TextContent2, ElementName=uc}"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

我希望定义的控件(uc)中的子控件将绑定到uc.DataContext的属性.我使用定义的控件如下:

<Window x:Class="Tms.TMSClient.Views.MainWindow" Name="window"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:control="clr-namespace:MyApp"
    xmlns:ribbon="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary">      

    <control:MyControl DataContext="{Binding Path=MyControlVM}"/>
Run Code Online (Sandbox Code Playgroud)

分配给窗口的DataContext具有以下结构:WindowVM.MyControlVM.TextContent.

给定的代码不起作用,因为文本框的DataContext被绑定到WindowVM.我认为问题可能是因为内部文本框在定义的控件(uc)之前被绑定,因此uc的有界DataContext 尚未生效.

我想要的是:自定义控件(MyControl)将绑定到其对应的viewmodel(MyControlVM),MyControl的内部元素将绑定到MyControlVM的属性.

你对这个问题有什么解决方案吗?

c# wpf binding user-controls

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

binding ×1

c# ×1

hibernate ×1

java ×1

jpa ×1

lazy-loading ×1

one-to-one ×1

user-controls ×1

wpf ×1