在Hibernate中,当您通过加载检索实体时,如果您访问该Entity的id访问器,则它不会初始化代理:
Property myProp = (Property) session.load(Property.class, myId);
myProp.getId(); // Doesn't load the proxy
myProp.getDescription(); // Loads the proxy from the database hit
Run Code Online (Sandbox Code Playgroud)
但是,我不清楚加载关联代理的规则是什么.我的印象是,当您通过HQL查询或条件检索实体时,适用相同的规则.
Property我的代码中的每一个都有一个Company.该Company声明为这样的:
@ManyToOne(fetch = FetchType.LAZY, optional=false)
@JoinColumn(name = "company_id", nullable=false)
private Company company;
Run Code Online (Sandbox Code Playgroud)
但是,在我的代码中,我正在迭代时通过N + 1选择,Properties因为Company在我调用时正在加载Company.getId().
在Company和Property对象中,id字段是Long注释的@Id.
为了防止加载Company实体,我还缺少一些其他考虑因素吗?
我有一个JodaTime Period,我是从两个DateTime时刻创建的.有没有一种方法可以将该期间转换为十进制小时数?
例如,我有一个时间段,从2010年1月1日下午1点到1点30分.我怎样才能将该时间段视为1.5小时.
在过去,我使用秒和BigDecimals手动转换,例如:
int seconds = myPeriod.toStandardSeconds().getSeconds();
BigDecimal d = new BigDecimal((double) seconds / 3600);
// Round to two decimals
BigDecimal correctResult = d.setScale(2, RoundingMode.HALF_DOWN);
Run Code Online (Sandbox Code Playgroud)
这种感觉就像一个黑客,当我开始将Periods加在一起时更别提尴尬了.似乎应该有更好的方法.
有任何想法吗?谢谢
如果你有两个班:
class A {
@Id
public Long id;
}
class B {
@Id
public Long id;
@ManyToOne
@JoinColumn(name = "parent_id", referencedColumnName = "id")
public A parent;
}
Run Code Online (Sandbox Code Playgroud)
B - > A是多对一的关系.我知道我可以在A中添加B的集合但是我不想要这种关联.
所以我的实际问题是,是否有创建SQL查询的HQL或Criteria方法:
select * from A left join B on (b.parent_id = a.id)
Run Code Online (Sandbox Code Playgroud)
这将检索具有引用A的每个B记录的笛卡尔积的所有A记录,并且将包括没有B引用它们的A记录.
如果您使用:
from A a, B b where b.a = a
Run Code Online (Sandbox Code Playgroud)
那么它是一个内连接,你没有收到没有B引用它们的A记录.
我没有找到一个没有两个查询的好方法,所以任何不到这个都会很好.
谢谢.
我正在努力将现有的Wicket webapp升级到1.5,并且在我们用于呈现HTML电子邮件的renderPage函数中遇到了麻烦.
以前我们使用此StackOverflow问题中引用/列出的代码和此(当前已损坏但稍后可能已修复)链接,但该代码不再有效,因为1.5中不存在很多这些类.
我也发现了这个电子邮件主题,但它对细节很清楚,我不知道如何从我的pageClass和参数创建WebPage. http://apache-wicket.1842946.n4.nabble.com/Render-WebPage-to-String-in-Wicket-1-5-td3622130.html
这是我的代码:
// Renders a page under a temporary request cycle in order to get the rendered markup
public static String renderPage(Class<? extends Page> pageClass, PageParameters pageParameters)
{
//get the servlet context
WebApplication application = (WebApplication) WebApplication.get();
ServletContext context = application.getServletContext();
//fake a request/response cycle
MockHttpSession servletSession = new MockHttpSession(context);
servletSession.setTemporary(true);
MockHttpServletRequest servletRequest = new MockHttpServletRequest(application, servletSession, context);
MockHttpServletResponse servletResponse = new MockHttpServletResponse(servletRequest);
//initialize request and response
servletRequest.initialize();
servletResponse.initialize();
WebRequest webRequest = …Run Code Online (Sandbox Code Playgroud) 我正试图制作一个相当复杂的图像和信息网格(几乎像Pinterest).具体来说,我试图在一个接一个的内插位置<ul>s.我有它的工作,但一个方面是导致问题,所以我试图问这个小块,以避免整个问题的复杂性.
为了水平对齐图像及其信息,我们使用内嵌<li>s其他内联块级元素.除了<li>s几乎没有高度之外,大部分都能正常工作.
这里的HTML和CSS 在JSFiddle中如果你想要除了下面的内容之外还要搞乱它:
HTML:
<div>
<ul class="Container">
<li>
<span class="Item">
<a href="#"><img src="http://jsfiddle.net/img/logo.png"/></a>
<span class="Info">
<a href="#">Title One</a>
<span class="Details">One Point One</span>
</span>
</span>
</li>
<li>
<span class="Item">
<a href="#"><img src="http://jsfiddle.net/img/logo.png"/></a>
<span class="Info">
<a href="#">Title Two</a>
<span class="Details">Two Point One</span>
</span>
</span>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
CSS:
.Container {
list-style-type:none;
}
.Container li {
background-color:grey;
display:inline;
text-align:center;
}
.Container li .Item {
border:solid 2px #ccc;
display:inline-block;
min-height:50px;
vertical-align:top;
width:170px;
}
.Container li .Item .Info …Run Code Online (Sandbox Code Playgroud) java ×4
hibernate ×2
css ×1
html ×1
jodatime ×1
lazy-loading ×1
many-to-one ×1
orm ×1
period ×1
wicket ×1
wicket-1.5 ×1