복붙노트

[SQL] 부동산의 열 이름은 최대 절전 모드로 매핑하기

SQL

부동산의 열 이름은 최대 절전 모드로 매핑하기

어떻게 속성의 열 이름을 알아 내 모델의 Hibernate 매핑을 액세스 할 수 있습니까?

나는이 열 이름을 포함하여 네이티브 SQL 문을 만들고 싶습니다 - 최대 절전 모드가 자동으로 생성되므로 열 이름이 매핑에 지정되어 있지 않습니다.

해결법

  1. ==============================

    1.Jherico I 덕분에 그 작업을 수행하는 방법을 발견 :

    Jherico I 덕분에 그 작업을 수행하는 방법을 발견 :

    ((Column) sessionFactoryBean.getConfiguration().getClassMapping(Person.class.getName())
            .getProperty("myProperty").getColumnIterator().next()).getName();
    
  2. ==============================

    2.

    ((AbstractEntityPersister) sessionFactory.getClassMetadata(o.getClass()))
        .getPropertyColumnNames(property)[0];
    
  3. ==============================

    3.당신은 최대 절전 모드 구성 개체에 액세스 할 수 있습니다.

    당신은 최대 절전 모드 구성 개체에 액세스 할 수 있습니다.

  4. ==============================

    4.이것은 한 수준의 복합 및 일반 속성 매핑을 검색합니다 :

    이것은 한 수준의 복합 및 일반 속성 매핑을 검색합니다 :

    String columnName(String name) {
        PersistentClass mapping = configuration.getClassMapping(ExtendedPerson.class.getName());
        Property property = mapping.getProperty(name);
        if(property.isComposite()){
            Component comp = (Component) property.getValue();
            property = comp.getProperty(StringHelper.unroot(name));
            assert ! property.isComposite(); //go only one level down 
        }
        Iterator<?> columnIterator = property.getColumnIterator();
        Column col = (Column) columnIterator.next();
        assert ! columnIterator.hasNext();
        return col.getName();
    }
    
  5. from https://stackoverflow.com/questions/2023700/get-column-name-of-property-mapped-with-hibernate by cc-by-sa and MIT license