我在ProductDfn类中有这样的hibernate映射
@ManyToOne( fetch = FetchType.LAZY, optional = true )
@JoinColumn( name = "productTypeFk", nullable = true )
public ProductType getProductType()
{
return productType;
}
Run Code Online (Sandbox Code Playgroud)
请注意,该关系被定义为可选(并且该列可以为空).
做HQL的时候是这样的
select p.name as col1, p.productType.name as col2 from ProductDfn p
Run Code Online (Sandbox Code Playgroud)
内部联接用于将ProductDfn连接到ProductType,因为hibernate从select子句中的隐式连接生成显式SQL连接.
但是,当执行上述操作时,如果productType为null(在DB中),则由于内部联接而不返回任何行.对于这种关系,我希望hibernate默认为执行外连接(因为关系是可选的)所以我会得到col2的"null",而不是没有行.
有谁知道这是否可能?
谢谢.
我一直在玩mysqlimport而且我遇到了限制,其中文件名必须与表名相同.有没有办法解决这个问题?
我无法重命名该文件,因为它被其他进程使用,我不想复制该文件,因为会有很多文件,有些非常大.
我想使用mysqlimport而不是LOAD INFILE.
编辑:不幸的是,这需要在Windows上运行所以没有带有符号链接的技巧我害怕.
我想将最后10MB的可能大文件复制到另一个文件中.理想情况下,我会使用FileInputStream,skip()然后read().但是我不确定skip()的性能是否会很糟糕.skip()通常是使用下面的文件搜索实现的,还是实际读取和丢弃数据?
我知道RandomAccessFile,但我对是否可以使用FileInputStream代替它感兴趣(RandomAccessFile很烦人,因为API是非标准的).
当一个表在SQL Server中具有聚簇索引时,是否意味着所有索引查询都将通过聚簇索引?
例如,如果我有一个包含单个非聚集索引的表(索引一列)并通过该列搜索行,它将执行 Index Seek -> RID -> Data row lookup -> Result
但是,如果我在不同的列上添加聚簇索引,则相同的查询将执行以下操作 Index Seek -> Extract clustering key -> Clustered index seek -> Results
这对我来说意味着非聚集索引不再"终止"叶子上的RID,而是使用聚簇索引的聚类键?是对的吗?
Ant有没有办法做字符串大写/小写/ captialize/uncaptialize字符串操作?我查看了PropertyRegex,但我不相信最后两个是可能的.还有别的吗?
如果我有几个方法的接口.有时我需要创建一个接口的新实现,它包装接口的另一个实例并将大多数方法委托给包装实例.然后我会改变一些实现,也许不会委托它们.
一个典型的例子是Collections.unmodifiableXXX()JDK中阻止访问修改方法的方法.
IntelliJ是否有任何代码帮助可以生成接口的委托实现,然后我可以调整几个方法?
与SQLServer类似,我可以执行以下操作
create index TimeSeriesPeriodSs1 on TimeSeriesPeriod (validationStatus, completionStatus)
where completionStatus= N'Complete'
and validationStatus= N'Pending'
Run Code Online (Sandbox Code Playgroud) 是否可以使用Hibernate + Spring对以下内容进行建模.
我使用Spring TransactionTemplate来执行会话+事务生命周期范围.
原因是有时我在业务流程中有几个阶段,我想在每个阶段完成后提交.但是我想继续使用相同的持久对象.如果我每个事务都有一个单独的会话,那么我会得到瞬态/分离异常,因为原始会话已关闭.
这可能吗?
任何人都会遇到质量/功能相似或相近的任何其他内容?
干杯.
我正在从一个文件中读取数据,遗憾的是,这种文件有两种类型的字符编码.
有一个标题和一个正文.标头始终为ASCII,并定义正文编码的字符集.
标头不是固定长度,必须通过解析器运行以确定其内容/长度.
该文件也可能非常大,所以我需要避免将整个内容带入内存.
所以我开始使用单个InputStream.我最初使用带有ASCII的InputStreamReader包装它并解码标头并提取主体的字符集.都好.
然后我创建一个具有正确字符集的新InputStreamReader,将其放在同一个InputStream上并开始尝试读取正文.
不幸的是,javadoc证实了这一点,即InputStreamReader可能会选择提前读取以达到效率目的.因此,标题的阅读会咀嚼身体的一部分/全部.
有没有人有解决这个问题的建议?会手动创建一个CharsetDecoder并一次输入一个字节但是一个好主意(可能包含在自定义的Reader实现中吗?)
提前致谢.
编辑:我的最终解决方案是编写一个没有缓冲的InputStreamReader,以确保我可以解析标题而不会咀嚼身体的一部分.虽然这不是非常有效,但我使用BufferedInputStream包装原始InputStream,因此它不会成为问题.
// An InputStreamReader that only consumes as many bytes as is necessary
// It does not do any read-ahead.
public class InputStreamReaderUnbuffered extends Reader
{
private final CharsetDecoder charsetDecoder;
private final InputStream inputStream;
private final ByteBuffer byteBuffer = ByteBuffer.allocate( 1 );
public InputStreamReaderUnbuffered( InputStream inputStream, Charset charset )
{
this.inputStream = inputStream;
charsetDecoder = charset.newDecoder();
}
@Override
public int read() throws IOException
{
boolean middleOfReading = false;
while ( true …Run Code Online (Sandbox Code Playgroud) java ×6
hibernate ×2
sql-server ×2
ant ×1
buffer ×1
decode ×1
filenames ×1
inputstream ×1
itext ×1
join ×1
mysql ×1
mysqlimport ×1
nullable ×1
oracle ×1
outer-join ×1
pdf ×1
restriction ×1
seek ×1
spring ×1
string ×1
tablename ×1
transactions ×1