当我尝试使用@OneToMany映射保存对象时,我遇到了ConstraintViolationException.Hibernate似乎认为我正在尝试将NULL放入映射列表中,或者它可能将其放在那里.这个问题似乎偶尔会发生:有些数据库很容易重现,但与其他数据库相比,我根本无法实现.
我是Hibernate和Hibernate Annotations的新手,所以任何帮助都会非常感激.
我有两个类:Camera和AlarmZone(扩展了第3类,Zone).除其他外,Camera包含AlarmZone对象的ID列表.这是类声明:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "cameras")
public class Camera
{
private Serializable id;
private List<Serializable> alarm_zones = new ArrayList<Serializable>();
...
@Id(generate = GeneratorType.SEQUENCE)
@Type(type = "java.lang.Long")
public java.io.Serializable getId()
{
return this.id;
}
public void setId(java.io.Serializable id)
{
this.id = id;
}
@OneToMany(targetEntity = java.lang.Long.class, fetch = FetchType.EAGER)
@JoinTable(table = @Table(name = "cameraalarmzones"))
public List<Serializable> getAlarmZones()
{
return alarm_zones;
}
public void setAlarmZones(List<Serializable> alarm_zones)
{
this.alarm_zones = alarm_zones;
}
...
}
@Entity
@Inheritance(strategy = InheritanceType.JOINED) …Run Code Online (Sandbox Code Playgroud) 我有两个 java 应用程序,需要通过加密的 TCP 套接字相互通信,但它们不需要相互验证(一个应用程序将接受()来自另一个的连接)。任何人都可以向我指出可以帮助我设置这些的教程/代码片段吗?
我正在寻找相当简单的东西,并且我不想提供任何密钥库或信任库材料。
编辑:我应该在这里更具体。我的意思是他们不必通过 SSL相互验证。我必须在应用程序级别执行一些重要的身份验证,因此我无法使用任何类型的基于 SSL 的身份验证方案。
此外,到目前为止(截至 2010 年 3 月 10 日中午)发布的答案中的一些链接需要密钥库文件。有没有一种简单的方法可以以编程方式生成我需要的密钥?
这是我的班级结构:
class A
class B extends A
class C extends A
class D extends C
class E extends C
Run Code Online (Sandbox Code Playgroud)
这是我的映射(为简洁起见,省略了类体):
A类:
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@MappedSuperclass
@DiscriminatorColumn(
name="className",
discriminatorType=DiscriminatorType.STRING
)
@ForceDiscriminator
public abstract class A
Run Code Online (Sandbox Code Playgroud)
B类:
@Entity
@DiscriminatorValue("B")
public class B extends A
Run Code Online (Sandbox Code Playgroud)
C类:
@Entity
@DiscriminatorValue("C")
@MappedSuperclass
@DiscriminatorColumn(
name="cType",
discriminatorType=DiscriminatorType.STRING
)
@ForceDiscriminator
public abstract class C extends A
Run Code Online (Sandbox Code Playgroud)
D类:
@Entity
@DiscriminatorValue("D")
public class D extends C
Run Code Online (Sandbox Code Playgroud)
E类:
@Entity
@DiscriminatorValue("E")
public class E extends C
Run Code Online (Sandbox Code Playgroud)
我有一个包含一组 A 的 F 类:
@Entity
public class …Run Code Online (Sandbox Code Playgroud) 我正在使用tomcat 6,spring mvc 3.0.0和spring security 3.0.0,并且由于我在数据库中存储的密码是sha1哈希,我不能使用摘要式身份验证(文档的第9.2.1节说明了).出于这个原因,我需要通过https进行身份验证.
由于潜在的处理开销,我希望尽可能多地保持常规http流量.有没有办法让spring使用https来获取未经身份验证的请求,然后在完成身份验证后使用http?我认为这是通过某种类型的ChannelProcessingFilter来完成的,但我对这些细节感到难过.
这是我目前的application-security.xml文件:
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">
<http use-expressions="true">
<intercept-url pattern="/**" access="isAuthenticated()" />
<http-basic />
</http>
<authentication-manager>
<authentication-provider user-service-ref="myUserDetailsService">
<password-encoder hash="sha"/>
</authentication-provider>
</authentication-manager>
<beans:bean id="myUserDetailsService"
class="path.to.myUserDetailsServiceImpl">
</beans:bean>
</beans:beans>
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助.
(这是一个跟进问题这一个。)
我在 eclipse 中遇到了 JUnit4 测试的问题。我正在尝试使用 @Test(expected=...) 注释来单元测试异常抛出。问题是当我运行测试时,它们作为错误返回而不是通过,即使我期望抛出异常。
我正在使用 Eclipse 3.4.0 和 JUnit 4.3.1。
这是代码:
要测试的类:
public class IPAddress
{
private byte[] octets;
private IPAddress()
{
octets = new byte[4];
}
public IPAddress(String addr) throws InvalidIPAddressException
{
this();
if(addr == null || !isValid(addr))
throw new InvalidIPAddressException(addr);
String strOctets[] = addr.split("\\.");
for (int i = 0; i < strOctets.length; i++)
octets[i] = Byte.parseByte(strOctets[i]);
}
public static boolean isValid(String addr)
{
String strOctets[] = addr.split("\\.");
if (strOctets.length != 4)
return …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个始终加载相同笔尖的视图控制器.我的初始化代码如下所示:
-(id)init
{
NSString* nibName;
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
nibName = @"XIB_iPad";
else
nibName = @"XIB_iPhone";
self = [super initWithNibName:nibName bundle:nil];
if (self)
{
...
}
return self;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
return [self init];
}
Run Code Online (Sandbox Code Playgroud)
问题是该代码导致视图控制器具有零视图.我有什么问题吗?有一个更好的方法吗?
谢谢.