added JoinType to remove the j2ee source code in CloudStack

This commit is contained in:
Alex Huang 2012-08-08 13:34:02 -07:00
parent 2ce632cf0b
commit e83c60a057
3 changed files with 40 additions and 1 deletions

View File

@ -26,9 +26,11 @@ import javax.persistence.SecondaryTable;
import javax.persistence.Table;
import com.cloud.network.security.SecurityRule.SecurityRuleType;
import com.cloud.utils.db.JoinType;
@Entity
@Table(name = ("security_group"))
@JoinType(type = "left")
@SecondaryTable(name = "security_group_rule", pkJoinColumns = { @PrimaryKeyJoinColumn(name = "id", referencedColumnName = "security_group_id") })
public class SecurityGroupRulesVO implements SecurityGroupRules {
@Id

View File

@ -0,0 +1,32 @@
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package com.cloud.utils.db;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
/**
* JoinType is only used with SecondaryTable. Temporary solution.
*/
@Target(TYPE)
@Retention(RUNTIME)
public @interface JoinType {
String type() default "inner";
}

View File

@ -539,7 +539,12 @@ public class SqlGenerator {
SecondaryTable[] sts = DbUtil.getSecondaryTables(clazz);
ArrayList<String> secondaryTables = new ArrayList<String>();
for (SecondaryTable st : sts) {
addPrimaryKeyJoinColumns(innerJoin, tableName, st.name(), "", st.pkJoinColumns());
JoinType jt = clazz.getAnnotation(JoinType.class);
String join = null;
if (jt != null) {
join = jt.type();
}
addPrimaryKeyJoinColumns(innerJoin, tableName, st.name(), join, st.pkJoinColumns());
secondaryTables.add(st.name());
}