我的datamodel中有两个名为User和UserProfile的实体.以下是它们的映射方式.
用户实体的代码:
@OneToOne(cascade=CascadeType.ALL)
@PrimaryKeyJoinColumn
public UserProfile getUserProfile(){
return this.userProfile;
}
public void setUserProfile(UserProfile userProfile){
this.userProfile=userProfile;
}
Run Code Online (Sandbox Code Playgroud)
来自UserProfile实体的代码:
@OneToOne(mappedBy="userProfile",cascade=CascadeType.ALL)
public User getUser(){
return this.user;
}
public void setUser(User user){
this.user=user;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我在UserProfile中有一个用于user属性的cascadetype.all.但是当我尝试删除UserProfile实体时,相应的用户实体仍然存在.(当我尝试删除User实体时,相应的UserProfile实体被删除.)
这是我的问题: -
我目前正在使用JoinPoint捕获在运行时传递给服务方法的参数.虽然JoinPoint帮助我检索参数值,但我发现当传递的参数是数组时,我没有提供任何好的API来检索参数名称,参数类型,单个参数值等.
这是一个例子:
public void doIt(String user, Attribute[] attr, Integer[] i, boolean bool, List<Attribute> list){.....}
Run Code Online (Sandbox Code Playgroud)
对于上面的方法,当我使用JoinPoint.getArgs()时,我看到参数的垃圾值,它是一个数组或集合.如果参数是数组或集合,我如何验证它们是否是其中之一以及如何遍历它们以检索单个值?
有什么建议 ?谢谢
我是一个新手试图弄清楚使用Hibernate与Tomcat和JBoss的利弊.
我正在开发一个前端使用Flex的Web应用程序,BlazeDS作为消息传递服务,后端使用Java.我们决定使用Hibernate作为持久性机制,但是想知道将它与Tomcat和JBoss一起使用的权衡.
谢谢.
这是我的一个实体的复合主键.
public class GroupMembershipPK implements Serializable{
private static final long serialVersionUID = 7816433876820743311L;
private User user;
private Group group;
public GroupMembershipPK(){
}
public boolean equals(Object o){
if(o==null){
return false;
}
if(o instanceof GroupMembershipPK){
final GroupMembershipPK groupMembershipPK=(GroupMembershipPK)o;
return groupMembershipPK.group.getGroupName().equals(this.group.getGroupName()) &&
groupMembershipPK.user.getName().equals(this.user.getName());
}
return false;
}
public int hashCode(){
return super.hashCode();
}
}
Run Code Online (Sandbox Code Playgroud)
继承我的实体(部分)使用上面的复合主键.
@Entity
@IdClass(GroupMembershipPK.class)
public class GroupMembership extends AbstractModelElementVersionOther{
private static final long serialVersionUID = 9188465566607060376L;
private String memType;
private Group group;
private User user;
public GroupMembership(){
super();
}
@Column(nullable=false) …Run Code Online (Sandbox Code Playgroud) 我无法理解aspectJ的编译时和加载时编织,并弄清楚要使用什么(以及如何使用ajc)来编译和构建我的项目.
这是我的项目结构: -
TestProject:一个java服务库.其他一些项目正在使用它.该项目不包含任何方面.
TestProject-Aspects:包含
在TestProject中为几个类提供建议的方面.我没有使用
AspectJ5注释样式,我所有的连接点都只是
当前的方法执行.
我的问题:
是否需要编织?
这样的事情会起作用吗?
编译TestProject-Aspects
<iajc>
sourceroots=${sources.dir}
destdir=${classes.dir}
classpath=${standard.compile.classpath}
</iajc>
Run Code Online (Sandbox Code Playgroud)
编译TestProject
<iajc>
sourceroots=${sources.dir}
destdir=${classes.dir}
classpath=${standard.compile.classpath}
inpath=${[TestProject-Aspects]pkg.classpath}
</iajc>
Run Code Online (Sandbox Code Playgroud)
我有一个Spring MVC Web应用程序,它使用freemarker作为模板语言.我目前正在进行更改以刷新html头部分而不是缓冲整个html并在最后进行刷新.我尝试将auto_flush freemarker设置为false并使用freemarker的内置<#flush>指令,如下所示,但这似乎不起作用.
common-header.ftl
<head>
.......
</head>
<#flush>
page.ftl
<#include "common-header.ftl" />
<body>
.......
</body>
Run Code Online (Sandbox Code Playgroud)
我很感激你的帮助.此外,根据API文档,autoFlush()似乎仅适用于不是由#include语句组成并需要多个Template.process()方法的页面.如果这是正确的,我应该编写一个自定义模板处理器来处理页面中的头部和身体部分吗?任何指针都会有所帮助.
更新:
尝试使用FreeMarkerView.java作为视图类,因为它使用HttpServletResponse的默认编写器(PrinterWriter)来处理编写器.虽然PrinterWriter支持flush()并且我的模板中的<#flush> freemarker指令似乎没有调用它,但这不起作用.
尝试扩展FreeMarkerView类以将PrinterWriter包装在BufferedWriter中,但这也不起作用.
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="suffix"><value>.ftl</value></property>
<property name="contentType"><value>text/html; charset=utf-8</value></property>
<property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
<property name="exposeSpringMacroHelpers"><value>true</value></property>
</bean>
Run Code Online (Sandbox Code Playgroud)
我很感激任何帮助.
aspectj ×2
jpa ×2
annotations ×1
flush ×1
freemarker ×1
hibernate ×1
html ×1
java ×1
java-ee ×1
jboss ×1
spring-mvc ×1
tomcat ×1