根据IBM's docs,为了让我进行插入/更新,我需要附加一些sql(with NC
OR with NONE
)来更新和插入语句。
我在CrudRepository上调用S save(S entity)
方法进行保存。 我是否有可能延长这一点以附加所需的sql?
我知道我可以编写自己的自定义插入/更新语句,但是如果我可以附加到生成的sql那将是非常好的。
答案 0 :(得分:0)
我设法通过扩展Hibernate的<Window x:Class="WPFttest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPFttest"
mc:Ignorable="d"
Title="MainWindow" Height="362" Width="525" MouseDown="Window_MouseDown" BorderBrush="Red" ResizeMode="NoResize" KeyDown="Window_KeyDown" WindowStyle="None">
<Grid x:Name="mainGrid" HorizontalAlignment="Left" Height="362" VerticalAlignment="Top" Width="525" OpacityMask="#00000000">
<Canvas x:Name="drawArea" HorizontalAlignment="Left" Height="312" Margin="0,50,0,0" VerticalAlignment="Top" Width="525" Background="White" MouseDown="Canvas_MouseDown">
</Canvas>
<Grid HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Width="525" MouseDown="Grid_MouseDown_1" OpacityMask="#00000000" Background="#00000000"/>
</Grid>
并覆盖EmptyInterceptor
方法来获得所需的结果。
String onPrepareStatement(String sql)
我还必须在public class MyInterceptor extends EmptyInterceptor {
@Override
public String onPrepareStatement(String sql) {
if (sql.startsWith("insert") || sql.startsWith("update")) {
sql += " with none";
}
return sql;
}
}
:
application.properties
请注意,spring.jpa.properties.hibernate.ejb.interceptor=fully.qualified.name.MyInterceptor
实现了EmptyInterceptor
接口,并且Interceptor
方法已在接口中标记为已弃用。
建议使用onPrepareStatement
接口,但我无法弄清楚如何使用Spring Boot设置它。所以,如果你这样做,请分享。
<强>更新强>
您可以在StatementInspector
:
StatementInspector
的实施方式
application.properties